ネストされた構造のディレクトリ「images」があり、その中に .png ファイルがあります。また、多数の .svg ファイルを含む単純なディレクトリ「svg」もあります。各 .svg ファイルを、同じ名前の .png ファイルがある同じディレクトリに移動する必要があります。
単一の特定の .svg ファイルに対するこのコマンドは機能します。
find /images -name 'sample.png' | grep -v thumb | xargs -i{} dirname {}|xargs -0 -I {} mv /svg/sample.svg {}
grep -v thumb が適用されるのは、.png ファイルごとに、「thumb」という名前の他のサブディレクトリに同じ名前のサムネイル ファイルがあるためです。
すべてのファイルに対してこのコマンドを書き込もうとしました:
find /svg/ -name "*.svg" -exec basename {} '.svg' \; | xargs -O -I {} "find /images/ -name {}"
しかし、私はエラーを受け取ります:「ベース名」はシグナル13で終了しました
さらに、この 2 番目のコマンドが機能する場合、次のステップはそれを最初のコマンドと結合することですが、別の問題があります。指定されたファイル名を最後のコマンド「mv」に送信するにはどうすればよいですか (コードの {???} を参照)。 ?
find /svg/ -name "*.svg" -exec basename {} '.svg' \; | xargs -O -I {} "find /images/ -name {}" | grep -v thumb | xargs -i{} dirname {}|xargs -0 -I {} mv /svg/{???} {}