findコマンドをmvコマンドと統合するには?

findコマンドをmvコマンドと統合するには?

名前が大文字で始まるすべてのファイルを現在のディレクトリからu下のディレクトリに移動しようとしています~/tmp

このコマンドを試しましたが、find . -type f -name "*[[upper]]*" -exec mv -t ~/tmp/u
動作しません。

ベストアンサー1

あなたは非常に近いです。

  1. マークアップにはコロンを使用する必要があります[[:upper:]]

  2. "*[[:upper:]]*"すべての名前を探す含む大文字。名前のあるファイルのみをインポートするスタート大文字の場合"[[:upper:]]*"(最初の文字を省略  *)を使用します。

  3. ただ言うと

    find . -name '[[:upper:]]*'
    

    そうだろうリスト名前が大文字で始まるすべてのファイル。ただし、使用する場合は、コマンドにファイル名を含めるように指示する  -exec必要があります。find{}

    (そしてあなたはいつもfindコマンドの実行を指示する前に、印刷専用モードでコマンド、特にファイルシステムを変更するコマンドをデバッグしてください。使用は一般的なデバッグ技術です。 )-exec echo mv …

  4. ただし、使用する場合は、コマンドを(またはそれに対応する)またはで終了する必要が-execあります。 (より';'\;+マニュアルページまたはこの質問に対するStéphane Chazelasの答え、区別のため。 )使用していますのでmv -t使用してください  +

だから最後のコマンドは

find . -name '[[:upper:]]*' -exec mv -t ~/tmp/u {} +

おすすめ記事