
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/