2016-03-25 2 views
1

Ich habe ein Verzeichnis voller Dateien mit Namen wie:Terminal-Befehl auf Dateinamen zu handeln, die Text enthalten keine

file_name_is_001 
file_name_001 
file_name_is_002 
file_name_002 
file_name_is_003 
file_name_003 

ich nur die Dateien kopiert werden sollen, die keine ‚ist‘. Ich bin mir nicht sicher, wie ich das machen soll. Ich habe versucht, danach zu suchen, aber kann google nicht die richtige Phrase scheinen, um die Ergebnisse zu finden.

Antwort

2

Einzelheiten hängen vom Betriebssystem, Shell etc. für ein UNIX-System eines recht ausführlich aber leicht Ansatz zu verstehen, wie diese aussehen könnte (bitte beachten Sie, dass ich es nicht testen):

mkdir some_temporary_directory 
mv *_is_* some_temporary_directory 
cp * where_ever_you_want_to_copy_it 
mv some_temporary_directory/* . 
rmdir some_temporary_directory 
2

Sie können dies mit bash tun. Erstens ist hier ein Befehl, den Sie eine Liste von Dateien zu erhalten, die den Text nicht enthalten _is_:

ls | grep -v "_is_" 

Das die Ausgabe von ls nimmt und passt auf alle Werte mit NICHT _is_ mit grep -v enthalten. Um diese Dateien dann zu kopieren, müssen wir die von grep ausgegebenen Zeilen in Argumente von cp umwandeln. Wir können dies xargs mit tun:

ls | grep -v "_is_" | xargs -J % cp % new_folder

Vom xargs Manpage, es ist ein Werkzeug zu „bauen und Befehlszeilen von der Standardeingabe auszuführen“.

Verwandte Themen