
상위 폴더와 동일한 출력 이름을 가진 파일을 압축하려면 어떻게 해야 합니까?
예를 들어 다음과 같은 폴더가 있습니다.
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
후행 슬래시가 없으면 변경되지 않은 상태로 반환됩니다).- 이렇게 하면 현재 디렉터리의 하위 디렉터리와 기존 디렉터리를 가리키는 현재 디렉터리의 심볼릭 링크에 대한 아카이브가 생성됩니다.