Bash は、パターンに一致するファイルを新しいフォルダに移動します。

Bash は、パターンに一致するファイルを新しいフォルダに移動します。

私と同様の質問があることを知っていますが、正規表現をまったく理解していないので、これは新しい質問です。

私のフォルダにファイルがたくさんあります。_GLM_特定のパターン( ""を含むパターン)と一致する別のフォルダにいくつかのファイルを移動するには、Bashを使用する必要があります。ソースフォルダが呼び出され、ターゲット/SingleScaleファイルは次のようになります/NotUsing。ファイル名の例は次のとおりです。

/SingleScale/Leopardus wiedii_GLM_canhtglad_s4_mean.csv

私は試した:

cp /SingleScale/*_GLM_*.csv /NotUsing/

答え1

注意してください:

  • Bash では*cp... mvnot のようなワイルドカードを使用します。一般的な表現。これはカーニバルです。内部パターンマッチングシステム詳細詳細と例)。
  • ファイル名にスペースが含まれていても大丈夫ですが、シェルを使用すると状況が複雑になる可能性があります。
    • 空白文字はフィールド区切り記号です。

      cp file1 file2 myDir
      

      ファイルは次のようにディレクトリにコピーされ、file1コピーされます。file2myDir

      cp Leopardus wiedii_GLM_canhtglad_s4_mean.csv myDir
      

      Leopardusファイルがないため失敗しますwiedii_GLM_canhtglad_s4_mean.csv

    • この問題は次の方法で解決できます。

      • 引用符を使用する(この場合、単一引用符または二重引用符は違いはありません):

        cp 'Leopardus wiedii_GLM_canhtglad_s4_mean.csv' myDir
        

        欠点は、ワイルドカードが引用符と競合することです。

      • エスケープされた空白文字を使用して\

        cp Leopardus\ wiedii_GLM_canhtglad_s4_mean.csv myDir
        

それ以外の場合は、コマンドは問題ないようです(実際にファイルを移動するmv代わりに使用する場合を除く)。cp詳細/エラーメッセージはありますか?

関連情報