이것은 특정 디렉토리에 있는 파일 목록입니다.
a_object_1.0.zip
file_name_conf_1.1.zip
anim_dup_1.1.zip
지정된 디렉터리의 파일을 반복하고 파일이 파일 목록의 파일 패턴과 일치하는지 확인하고 압축을 풀고 각 파일의 이름을 특정 접두사( cx_a_object_1.0.zip, cx_file_name_conf_1.1.zip, anim_anim_dup_1.1.zip
) 로 바꿉니다.
답변1
#!/bin/bash
for szFile in /var/tmp/*.zip;
do
unzip "$szFile";
mv "$szFile" "Prefix_"$(basename -- "$szFile")
done
할 것이다:
zip
모든 파일을 반복/var/tmp
- 추출하세요
- 접두사 추가
- 현재 디렉터리로 이동합니다.
답변2
다음은 find를 사용한 예입니다.
find somedir/ -type f -name 'some.zip' -exec bash -c 'name=$1; echo unzip "$name" -d "${name%/*}"; echo mv "$name" "${name%%/*}/cx_c_${name##*/}"' _ {} \;
echo
결과가 만족스러우면 삭제하세요.
또는 로컬 매개변수가 있는 함수를 생성하고 다음과 같이 파일 이름을 함수에 매개변수로 전달합니다.
cfind() {
local name=$1
find somedir/ -type f -name "$name" -exec bash -c 'name=$1; echo unzip "$name" -d "${name%/*}"; echo mv "$name" "${name%%/*}/cx_c_${name##*/}"' _ {} \;
}
불러라
cfind myfilename.zip