OS:aixシェル:bsh
こんにちは、ppl
2種類のファイルがあります。1つは.pdf.markerで終わり、もう1つは.pdfで終わります。
常に同じ名前のペアが存在する必要があります(拡張子のみが異なります)。
.pdf.markerファイルを移動するときは、対応する.pdfファイルも移動する必要があります。
私はこのようなことを試みました:
find ${INPUT_LOCATION}/ -name "*.pdf.marker" | xargs -I file mv file ${OUTPUT_LOCATION}/. mv $(basename file .marker) ${OUTPUT_LOCATION}/.
それから私はこれを読みました:引数として複数のコマンドを持つxargsそして次の ようなことを試みました:
find ${INPUT_LOCATION}/ -name "*.pdf.marker" | xargs -I file {mv file ${OUTPUT_LOCATION}/.; mv $(basename file .marker) ${OUTPUT_LOCATION}/.;}
しかし、それでも機能しませんでした。
xargsの後に2つのコマンドを実行する必要があります。
編集
提案された回答に従って、xargsに続く2つの別々のmoveコマンドではなく、2つのパラメーターを1つのmoveコマンドに入れようとしました。
find ${INPUT_LOCATION}/ -name "*.pdf.marker" | xargs -I file mv file $(basename file .marker) ${OUTPUT_LOCATION}/.
しかし今、.pdf.markerが最初に移動され、次にファイル名から.markerを削除して.pdfファイル名を取得しようとすると、そのようなファイルやディレクトリがないという警告が表示されます。
.pdfファイル名文字列を取得する別の方法はありますか?
解決
find ${INPUT_LOCATION} -name '*.pdf.marker' -exec sh -c 'mv $0 `dirname $0`/`basename $0 .marker` $1' {} ${OUTPUT_LOCATION} \;
ccaで200000ファイルを移動しました。25分 問題なく。
回答を寄せてくださった皆様、ありがとうございました。ナウエル・フイユルさん、ありがとうございました!