
如何壓縮輸出名稱與父資料夾相同的檔案?
例如,我有一個資料夾:
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
我想將資料夾壓縮en_2017-04-28_20-26-59-439552
到en_2017-04-28_20-26-59-439552.tar.bz2
我可以使用免費的開源程序 lbzip2
:
tar -c -I lbzip2 -f en_2017-04-28_20-26-59-439552.tar.bz2 *
但是,我不希望命令包含存檔檔案的名稱 ( en_2017-04-28_20-26-59-439552.tar.bz2
),因為在我的應用程式中我事先不知道它。
答案1
我最終使用了以下 bash 腳本:
for d in */ ; do
tar -c -I lbzip2 -f "${d%/}.tar.bz2" "$d"
done
一些評論:
for d in */ ; do
循環遍歷目錄(如何在 bash 中僅循環目錄?)${d%/}
$d
刪除資料夾名稱的尾部斜杠(如果沒有尾部斜杠,則返回不變)。- 這會為目前目錄的子目錄以及目前目錄中指向現有目錄的符號連結建立存檔。