私と同様の質問があることを知っていますが、正規表現をまったく理解していないので、これは新しい質問です。
私のフォルダにファイルがたくさんあります。_GLM_
特定のパターン( ""を含むパターン)と一致する別のフォルダにいくつかのファイルを移動するには、Bashを使用する必要があります。ソースフォルダが呼び出され、ターゲット/SingleScale
ファイルは次のようになります/NotUsing
。ファイル名の例は次のとおりです。
/SingleScale/Leopardus wiedii_GLM_canhtglad_s4_mean.csv
私は試した:
cp /SingleScale/*_GLM_*.csv /NotUsing/
答え1
注意してください:
- Bash では
*
、cp
...mv
not のようなワイルドカードを使用します。一般的な表現。これはカーニバルです。内部パターンマッチングシステム(詳細、詳細と例)。 - ファイル名にスペースが含まれていても大丈夫ですが、シェルを使用すると状況が複雑になる可能性があります。
空白文字はフィールド区切り記号です。
cp file1 file2 myDir
ファイルは次のようにディレクトリにコピーされ、
file1
コピーされます。file2
myDir
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
詳細/エラーメッセージはありますか?