So komprimieren Sie den jeweiligen Dateityp in einem Verzeichnis

So komprimieren Sie den jeweiligen Dateityp in einem Verzeichnis

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 aufMUSTER

  • mv noext.zip path/to/dest_dir- Verschieben des erstellten Archivs in dasZielVerzeichnis

Antwort2

Sie können findeine invertierte Bedingung für das -nameFeld 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 .zipArchiv zu erstellen.

Möglicherweise müssen Sie die Tiefenoptionen hinzufügen, findals -mindepth 1 -maxdepth 1ob 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 extglobden obigen Befehl aus. Führen Sie setopt ksh_globdann in zsh den obigen Befehl aus, oder alternativ

setopt extended_glob
zip /another/directory/files_without_extension.zip ^*.*

verwandte Informationen