Bashはワイルドカードを介して拡張子のないファイル名を選択します。

Bashはワイルドカードを介して拡張子のないファイル名を選択します。

bashが失敗したときにワイルドカードを介して拡張子のないファイル名を選択する方法は?例えば

$ ls /source/c
m m.asm m.c m.d m-0 m-1 

$ cp -ru /source/c/*. ~/Downloads/c
cp: cannot stat '/source/c/*.': No such file or directory

m m-0 m-1のみコピー

助けてください!とても幸せです。ありがとうございます。

ベストアンサー1

ドットで区切られたファイル名を使用したくない場合は、!(*.*)代わりに拡張glob表現を使用してください*.

cp -ru /source/c/!(*.*) ~/Downloads/c/

Bashはextglobオプションで制御されるため、エラーが発生した場合はを使用してオンにする必要がありますshopt -s extglob。オフにしたい場合は使用してくださいshopt -u extglob

隠しファイル(必要)をコピーする場合は、shopt -s dotglobファイル名を除外することもできます。たとえば、.bashrc除外と見なすこともできます。拡大する(Unixでは明確に定義されていない概念):

cp -ru /source/c/!(?*.*) ~/Downloads/c/

おすすめ記事