Non consiglio cercando di scrivere una regola per Escludere file specifici. Quello che avrei più probabilità di fare sarebbe cercare di trovare una maschera/glob o qualche altra ancora nei nomi dei file che vuoi rimuovere, che i file che vuoi mantenere, non hanno. Nella maggior parte dei casi, potresti probabilmente farlo per estensione. Sfortunatamente, poiché non hai menzionato il nome di nessuno dei file, non posso aiutarti in modo più specifico.
Qualcosa di simile a due (o più) trovare loop: -
find *.mp3 d.mp3 -maxdepth 1 -type f | while read mp3s
do
mv $mp3s ~/d.stuff-to-keep
done
find *.txt d.mp3 -maxdepth 1 -type f while read textfiles
do
rm -v $textfiles
done
In caso contrario, cercare qualche altra caratteristica comune dei file. Se non ce n'è uno, potrebbe essere necessario rinominare i file per dartene uno. Ho sempre inserito molti ancore (campi di nomi separati, estensioni ecc.) Nei miei nomi di file, perché in questo modo ho molti modi diversi per fare ciò che mi serve con loro. Il mio solito formato del nome è: -
<extension>.+<author>+<year>+<work-name>+<volume-number>+<number-of-volumes>
Inoltre segni sono separatori di campo, trattini sono per gli spazi, ma senza trattini come sia primo o ultimo carattere. Tutte le lettere minuscole e nessun carattere di controllo o altri non-alfanumerici consentiti. Di conseguenza, posso eliminarli con awk, cut o qualsiasi altra cosa potrei voler usare e rinominarli facilmente. Mettere l'estensione all'inizio del nome significa anche che è necessario un solo flag (-l) per ottenere un file system perfettamente ordinato.
Se si sa come utilizzare la struttura di directory come un database con gli strumenti POSIX di base, a volte non è necessario installare qualcosa di più complicato, al fine di fare ciò che si desidera.
Hai un lungo limite per i nomi di file in UNIX, oltre al completamento della scheda per navigare tra nomi lunghi. Non aver paura di fare un uso liberale di entrambi.
State ottenendo alcun tipo di errori? – cforbish
Sei sicuro che 'rm! (Nomefile1 | nomefile2) -rf' funzioni bene al di fuori di uno script? Mi sarei aspettato 'rm -rf! (Nomefile1 | nomefile2)' invece (con l'opzione prima degli operandi). – ruakh
@ruakh Ho letto questo più volte. Sto anche usando le opzioni su 'rm' dopo i file di volta in volta. Forse è un po 'incoerente, ma ha sempre funzionato per me. @mario non è necessario tornare indietro alla directory con 'cd -' perché viene usata una subshell quando si esegue lo script. – EverythingRightPlace