.jpg.gz
내 디렉토리에 압축을 풀어야 할 파일이 많이 있습니다 .
압축 해제 명령은 다음과 같습니다.
tar -xzvf FileNameHere.jpg.gz
그러나 디렉토리의 파일을 재귀적으로 압축 해제하는 플래그가 있습니까? 압축된 파일이 100개가 넘는데 각 파일의 압축을 수동으로 풀고 싶지 않습니다.
또한 SSH를 통해 호스팅 서비스에 연결하고 있으므로 다음 명령만 사용할 수 있습니다.
arch
bzip2
cal
cksum
cmp
cp
crontab
basename
cd
chmod
ls
date
df
du
dos2unix
unix2dos
file
getfacl
gzip
head
hostid
tail
mkdir
mv
nslookup
sdiff
tar
uptime
wget
whois
unzip
답변1
사용해야 하는 파일을 추출하려면 다음을 수행하십시오 gzip
.
gzip -d *.jpg.gz
이 작업을 재귀적으로 수행한다고 언급하셨는데, 그렇지 않은 경우 find
각 디렉토리에 차례로 액세스하고 위 명령을 실행해야 합니다.
답변2
액세스하려는 호스트의 셸이 ssh
bash 버전 >= 4.0인 경우 다음을 수행할 수 있습니다.globstar 옵션 활성화. 활성화되면 **
glob은 하위 디렉터리를 반복적으로 일치시킵니다. 따라서 다음 사항이 귀하의 필요에 적합해야 합니다.
shopt -s globstar
for gz_file in **/*.jpg.gz; do
gzip -d "$gz_file"
done
하위 디렉터리로 수동으로 재귀할 필요가 없습니다.
답변3
디렉터리를 반복하는 쉘 스크립트를 작성하는 것이 가능하지만(하지만 원격 sh에 액세스할 수는 없을 것 같습니다), 원격이 와일드카드 확장을 위해 SSH를 제한했다고 가정하면 이 조잡하지만 효과적인 바로 가기를 사용할 수 있습니다.
gzip -d *.jpg.gz
gzip -d */*.jpg.gz
gzip -d */*/*.jpg.gz
...
...하위 디렉터리의 깊이와 크기에 따라 다릅니다.
참고: 파일이 너무 많으면 결국 초과될 수 있습니다.명령줄 길이 제한
편집: 이는 ls -R을 사용하여 답변을 포함했지만 전체 경로를 제공하지 않았습니다.