名前が部分文字列で始まるファイルをコピーする方法は?

名前が部分文字列で始まるファイルをコピーする方法は?

すべてのファイルをコピーしたい2桁の数字で始まり、後ろに下線が続きます。。以下のコードはファイルをKIRCフォルダにコピーしません。

cp -R  ~/KIRP/[0-9][0-9]_* ~/KIRC/

フォルダの内容の例KIRP:

11_abc.py
9_efg.R
hij_12.csv

期待される出力: 11_abc.py 9_efg.R

ベストアンサー1

9_efg.R前に数字が1つだけなので、パターンと一致しません_11_abc.pyしかし、それは。おそらくglob演算子をfishサポートしていない[...]シェルで試してみました。

_名前が0から99の間の数字で始まり、数字を表すために使用される数字(000_x、、1_yを含む)が続くファイルをコピーするには、11_zglob演算子を持つzshシェルを使用できます。

cp -R  ~/KIRP/<0-99>_* ~/KIRC/

または

zsh -c 'cp -R  ~/KIRP/<0-99>_* ~/KIRC/'

他の殻から。

bashシェルを使用すると、次のことができます。

shopt -s extglob failglob
cp -R ~/KIRP/*(0)[123456789]?([0123456789])_* ~/KIRC/

0sの後に1から9までの数字([1-9]bashとは異なり、zshは通常数百の異なる文字と一致します)と0から9の間のオプションの数字が続く任意の数字と一致します。一致するものがない場合は、文字通り名前付きfailglobファイルをコピーしないでください。*(0)[123456789]?([0123456789])_*

次の種類のファイルの場合目次、ディレクトリとその内容の両方を再帰的にコピーしますR。ファイル形式の除外目次、そしてzsh

cp ~/KIRP/<0-99>_*(^/) ~/KIRC/

(Bashにはそれに対応するものはありません)。

または、すべてのレベルのサブディレクトリにあるファイルをコピーしてください。~/KIRP

cp ~/KIRP/**/<0-99>_*(D^/) ~/KIRC/

D隠しディレクトリのコンテンツを除外するには削除してください)。

おすすめ記事