Wie kann ich Dateien komprimieren, deren Ausgabename der des übergeordneten Ordners ist?

Wie kann ich Dateien komprimieren, deren Ausgabename der des übergeordneten Ordners ist?

Wie kann ich Dateien komprimieren, deren Ausgabename der des übergeordneten Ordners ist?

Ich habe beispielsweise die Ordner:

ubup@neter:/NeuroNER-master/output$ tree
.
├── en_2017-04-28_20-26-59-439552
│   ├── 000_test.txt
│   ├── 000_test.txt_conll_evaluation.txt
│   ├── 000_train.txt
│   ├── 000_train.txt_conll_evaluation.txt
│   ├── 000_valid.txt
│   ├── 000_valid.txt_conll_evaluation.txt
│   ├── 001_test.txt
│   ├── 001_test.txt_conll_evaluation.txt
│   ├── 001_train.txt
│   ├── confusion_matrix_for_epoch_0005_in_valid_binary_evaluation.df
│   ├── confusion_matrix_for_epoch_0005_in_valid_bio_evaluation.df
│   ├── confusion_matrix_for_epoch_0005_in_valid_token_evaluation.df
│   ├── model
│   │   ├── checkpoint
│   │   ├── dataset.ickle
│   │   ├── tensorboard_metadata_characters.sv
│   ├── results.son
│   └── tensorboard_logs
│       ├── test
│       │   └── events.ut.fevents.493425627.er

Ich möchte den Ordner komprimieren en_2017-04-28_20-26-59-439552inen_2017-04-28_20-26-59-439552.tar.bz2

Ich könnte das kostenlose Open-Source-Programm verwenden lbzip2:

tar -c -I lbzip2 -f en_2017-04-28_20-26-59-439552.tar.bz2 *

Ich möchte allerdings nicht, dass der Befehl den Namen der Archivdatei ( en_2017-04-28_20-26-59-439552.tar.bz2) enthält, da ich ihn in meiner Anwendung nicht im Voraus kenne.

Antwort1

Ich habe schließlich das folgende Bash-Skript verwendet:

for d in */ ; do
   tar -c -I lbzip2 -f "${d%/}.tar.bz2" "$d"
done

Einige Kommentare:

  • for d in */ ; dodurch Verzeichnisse blättern (Wie durchlaufe ich in Bash nur Verzeichnisse?)
  • ${d%/}entfernt den abschließenden Schrägstrich des Ordnernamens (es würde $dunverändert zurückgegeben, wenn es keinen abschließenden Schrägstrich gäbe).
  • Dadurch wird ein Archiv sowohl für die Unterverzeichnisse der aktuellen Verzeichnisse als auch für symbolische Links im aktuellen Verzeichnis erstellt, die auf ein vorhandenes Verzeichnis verweisen.

verwandte Informationen