상위 폴더와 이름이 같은 출력 파일을 압축하는 방법은 무엇입니까?
예를 들어 다음과 같은 폴더가 있습니다.
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
폴더 이름에서 후행 슬래시를 제거합니다(후행 슬래시가 없으면 변경되지 않은 상태로 반환).- 이는 현재 디렉토리의 하위 디렉토리 아카이브와 기존 디렉토리를 가리키는 현재 디렉토리 내의 심볼릭 링크를 생성합니다.