
Ich habe drei Arten von Dateien in einem Verzeichnis wie.txt,.csvund Dateien ohne Erweiterungen.
Beispiel
test
nest
prod
test.csv
prod.txt
nest.csv
Ich möchte die Dateien ohne Erweiterung komprimieren und diese ZIP-Datei in ein anderes Verzeichnis verschieben. Bitte helfen Sie mir, dieses Problem zu lösen
Antwort1
Verwenden vonTeerDienstprogramm:
tar -cvf noext.zip --exclude=*.* * && mv noext.zip path/to/dest_dir
-c
- ein neues Archiv erstellen--exclude=*.*
- Dateien ausschließen basierend aufMUSTERmv noext.zip path/to/dest_dir
- Verschieben des erstellten Archivs in dasZielVerzeichnis
Antwort2
Sie können find
eine invertierte Bedingung für das -name
Feld mit einem Glob-Muster verwenden, das Namen mit Punktzeichen entspricht, wie unten
find . -type f ! -name "*.*" -exec zip filename.zip "{}" +
[ -f filename.zip ] && mv filename.zip /to_whatever_path_needed/
Der Ausdruck ruft alle Dateien abnichthat einen .
Charakter in ihren Namen und übergibt ihn in einem Durchgang an Zip, um das .zip
Archiv zu erstellen.
Möglicherweise müssen Sie die Tiefenoptionen hinzufügen, find
als -mindepth 1 -maxdepth 1
ob Sie die Dateien lokalisieren möchtennurin Ihrem aktuellen Verzeichnis.
Antwort3
In ksh:
zip /another/directory/files_without_extension.zip !(*.*)
Führen Sie dann in bash shopt -s extglob
den obigen Befehl aus. Führen Sie setopt ksh_glob
dann in zsh den obigen Befehl aus, oder alternativ
setopt extended_glob
zip /another/directory/files_without_extension.zip ^*.*