각 폴더에 파일이 포함된 여러 폴더 계층 구조가 있는 폴더(예: 폴더 A)의 모든 파일을 압축해야 합니다. 이 폴더 A는 디렉터리에 있는 수천 개의 폴더 중에 존재합니다. 모든 폴더의 모든 파일을 압축해야 합니다. 다음 명령을 시도하고 있습니다.
gunzip -r path/to/Folder/*/Folder_A/
다음 오류가 발생합니다: Argument list to long
.
명령을 사용하여 파일을 압축하도록 도와주세요.
답변1
for folder in path/to/Folder/*/Folder_A/; do gunzip -r "$folder"; done
테스트하지는 않았지만 이것이 효과가 있을 것입니다. Bash는 여러 디렉터리로 확장되므로 path/to/Folder/*/Folder_A/
명령은 다음과 같지만 gunzip -r path/to/Folder/1/Folder_A/ path/to/Folder/2/Folder_A/ path/to/Folder/3/Folder_A/ # and so on
gunzip은 "천" 인수를 허용하지 않는 것 같습니다. 위의 루프는 *
첫 번째 루프를 확장하고 각 루프에 대해 새로운 gunzip 명령을 생성합니다.
for 루프가 작동하지 않으면 find를 사용해 볼 수 있습니다.
find /path/to/Folder -name Folder_A -type d -print0 | \
while read -d $'\0' folder; \
do \
gunzip -r "$folder" \
done
*
(-directories가 특수 문자나 공백을 사용하는 경우 두 솔루션 모두 작동하지 않을 수 있습니다)