Linux bash 셸에서 내 파일은 다음과 같습니다.
xyz_a.tgz xyz_b.tgz xyz_c.tgz
각 파일을 별도의 폴더에 추출하고 싶습니다.
a b c
나는 이것을 시도한다:
$ for file in xyz_*.tgz ;do tar -xzf $file -C $file --strip -component=1;done
그러나 그것은 막혔습니다. 도와주세요?
답변1
$ for file in xyz_*.tgz; do
dir="${file/.tgz}";
dir="${dir/xyz_}";
echo mkdir -p "$dir";
echo tar -C "$dir" xfz "$file";
done
mkdir -p a
tar -C a xfz xyz_a.tgz
mkdir -p b
tar -C b xfz xyz_b.tgz
mkdir -p c
tar -C c xfz xyz_c.tgz
(가독성을 위해 줄 바꿈을 추가했습니다. 그대로 실행하거나 한 줄로 병합할 수 있도록 세미콜론을 그대로 두었습니다.)
이를 수행하는 한 가지 방법의 파일럿 예제는 다음과 같습니다. 두 개의 bash 패턴 교체 명령을 사용하여 접미사 .tgz
와 접두사를 제거하여 xyz_
각 파일 이름에 대해 일치하는 Fireory 이름을 추출합니다. 그런 다음 각 디렉터리가 .tgz로 끝나는지 확인하는 명령을 인쇄합니다 mkdir p
. 마지막으로 tar
각 .tgz 파일을 자체 디렉터리로 추출하는 명령을 인쇄합니다.
echo
실제로 이러한 명령을 실행하려면 및 줄을 제거하세요.mkdir
tar