コマンドラインで「検索」を使用する

コマンドラインで「検索」を使用する

コンピュータでヨセミテを実行しています。コマンドラインから複数の文書をダウンロードフォルダから文書に移動しようとしています。

find . -iname '*.pdf' -exec mv "{}" ./Documents \

与えられた答えはほとんどすべての質問に対する答えです。今、移動されたファイルはどうなるのだろうか。 rootユーザーのドキュメントフォルダにありますか?

答え1

ファイルを移動するために最初にファイルを見つける必要はありません。次のことができます。

mv *.pdf ../Documents

find の使用にこだわる場合:

find . -iname '*.pdf' -exec mv {} ../Documents \;

ここで最後の「\」は「;」のようなエスケープ文字です。これにより、シェルが正常に動作するようになります。

答え2

コマンドは次のとおりです。

find ~/Downloads -iname "*.pdf" -exec mv '{}' ~/Documents \;

バックスラッシュの後ろのセミコロンに注意してください。あるいは、以下のようにする方が良いかもしれません。

find ~/Downloads -iname "*.pdf" -exec mv '{}' ~/Documents +

使用されているプラ​​ス記号を参照してください。

または次のようになります。

find ~/Downloads -iname *.pdf -exec mv {} ~/Documents +

周囲の一重引用符は、引用符{}内の文字を何らかのシェル句読点として解釈しないようにシェルに指示します。一般的には必要ありませんが、一重引用符を使用することは悪い習慣ではありません。私が知っている限り、これは他の側面にも拡張fishされます。{}文字{}自体は、デフォルトで見つかったファイルのリストを表します。

パラメータの周りに二重引用符inameも必要ありませんが、それを使用することも悪い習慣ではありません。

質問のコマンドは引き続き文字を使用するため、Enterその後に押すと入力を続けることができる別の行が表示されます。それでは、そのコマンドの後に何が入力されましたか?それとも質問にセミコロンを入力するのを忘れましたか?一般ユーザーとしてコマンドを入力した場合、PDFファイルはまだホームディレクトリのどこかにある可能性があります。

端末を開き、 と入力するのが最も便利ですman find。次に、このシナリオを扱う使用方法については、例のセクションを参照してください。

システムですべてのPDFファイルを検索するには:

cd && find / -iname "*.pdf" 1>found.txt

これにより、一般ユーザーアカウントに一覧表示権限を持つすべてのPDFファイルを含むfound.txtというリストが作成されます。欠落しているファイルがどこに行ったのかを答えるのに十分な情報があるかどうかわかりません。

答え3

サブディレクトリにpdfファイルがあるため、「find」を使用するか、「mv *.pdf ../Documents」のみを使用するとします。まず、コマンドが私が望むように機能することを確認するには、次のようにします。

探す。 -タイプf |

次に、xargsを使用して残りのコマンドを入力します。

探す。 - f | grep data$ | xargs mv ../ドキュメント

私は習慣的に「grep」と「xargs」をコマンドの最後に置くのが好きです。なぜなら、私はすでに出力とその出力が何をしているのかを知っているからです。

関連情報