Percona XtraBackup을 사용하여 압축된 백업을 생성했지만 이제 파일의 압축을 풀어야 합니다. 지침에 따르면 다음을 실행해야 합니다.
for bf in `find . -iname "*\.qp"`; do qpress -d $bf $(dirname $bf) && rm $bf; done
하지만 모든 곳을 검색하고 찾은 파일의 압축을 풀 것 같습니다. 특정 디렉터리와 하위 디렉터리에만 파일의 압축을 풀기를 원합니다.
나는 실행하려고 :
for bf in `find . -iname "/path/to/my/directory/*.qp"`; do qpress -d $bf $(dirname $bf) && rm $bf; done
하지만 이로 인해 오류가 발생합니다.
find: warning: Unix filenames usually don't contain slashes (though pathnames do).
That means that '-iname `/path/to/my/directory/*.qp'' will probably evaluate to false all the time on this system.
어떻게 해야 하나요?
답변1
for bf in `find . -iname "*\.qp"`; do qpress -d $bf $(dirname $bf) && rm $bf; done for bf in `find . -iname "/path/to/my/directory/*.qp"`; do qpress -d $bf $(dirname $bf) && rm $bf; done
두 명령 모두에 많은 문제가 있습니다. 특히, find
출력을 반복하고 변수를 참조하지 못하여 특이한 파일 이름을 처리할 수 없습니다.
물론, 받은 오류에 명시된 것처럼 파일 이름에는 슬래시가 포함되지 않습니다.
당신이 원하는 것은 :
find /path/to/my/directory -type f -iname '*.qp' -exec sh -c 'for f in "$@"; do qpress -d "$f" "$(dirname "$f")" && rm "$f"; done' find-sh {} +
또는 개행 문자가 포함된 대체 버전:
find /path/to/my/directory -type f -iname '*.qp' -exec sh -c '
for f
do
qpress -d "$f" "${f%/*}" &&
rm "$f"
done' find-sh {} +
추가 자료:
답변2
오류는 오류가 발생한 위치를 알려줍니다. 로 끝나는 파일명이 없습니다 /directory/*.qp
. 이 -iname
매개변수는 경로가 아닌 올바른 파일 이름에 관한 것입니다.
따라서 명령 앞에 원하는 find 명령을 추가하거나 작성해야 합니다 cd /path/to/my/directory/
. 해당 디렉토리부터 시작하여 .find /path/to/my/directory/ -iname "*.qp"
*.qp