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