バックティックは貼り付けとは異なる結果を提供します。

バックティックは貼り付けとは異なる結果を提供します。

GNU bash、バージョン 5.0.17(1)-リリース(x86_64-pc-linux-gnu)
Ubuntu 20.04.3 LTS

そのため、約20個の7zファイルをダウンロードし、そのファイルをどこかに移動したいのですが、すでにダウンロードしている古い7zファイルは移動したくありません。 (しかし、ファイル名にもスペースがあります。)だから私は本当に好きです。

mv `find -mmin -700 -iname "*.7z" -printf "\"%f\" "` ~/FOLDER/

過去11時間に変更されたすべての7zファイルを見つけて〜/ FOLDER /に移動する必要があります。

すべてのファイルを移動するのではなく、次のファイル名の断片が原因で多くのエラーが発生しました。

mv: cannot stat 'Pinball': No such file or directory

私はfindコマンド自体を試してみましたが、それぞれを引用符で囲み、1行に合理的に見えるファイルのリストを提供します。また、バックティックが基本的にDIDだと思ったように、コマンドの出力をfindに貼り付けようとしましたが、mv PASTED_HERE ~/FOLDER/正常に動作しました。 (私も$()バックティックを置き換えようとしましたが、バックティックと同じエラーが発生しました。)何が問題ですか?

ベストアンサー1

引用符はファイル名の一部ではないため、名前に引用符を含めても機能することは期待できません。

find -mmin -700 -iname '*.7z' -exec echo mv -v {} ~/FOLDER/ \;

または(GNUを使用mv)、

find -mmin -700 -iname '*.7z' -exec echo mv -vt ~/FOLDER/ {} +

どちらの場合も、echo提案された結果に満足したら削除してください。


参考までに、バックティックはもはやベストプラクティスとは見なされません。結果を単一の単語として扱う必要がある場合は、代わりに二重引用符を使用できます` ... `$( ... )

おすすめ記事