invers bash v4のシェル拡張を扱う方法はありますか?ワイルドカードではないすべてのファイルを扱いますか?私はrm
に、この場合のフォーマット'Folder-???'
でないすべてのファイルを必要とし、その後bash:逆(すなわち、NOT)シェルのワイルドカード展開?
for file in *
do
[[ $i =~ \Folder-...\ ]] && rm '$i'
done
ループをやって短い(すなわち内蔵)方法があるかどうかと思いまして。
invers bash v4のシェル拡張を扱う方法はありますか?ワイルドカードではないすべてのファイルを扱いますか?私はrm
に、この場合のフォーマット'Folder-???'
でないすべてのファイルを必要とし、その後bash:逆(すなわち、NOT)シェルのワイルドカード展開?
for file in *
do
[[ $i =~ \Folder-...\ ]] && rm '$i'
done
ループをやって短い(すなわち内蔵)方法があるかどうかと思いまして。
shopt -s extglob
rm -- !(Folder-???)
+1:そのことを知らなかった。 –
@Dimitreはbashのためのright answerを持っている...ただ、bashの学習好奇心のうち
(例は...ところで、動作しません)。
for file in *; do
case "$file" in
Folder-???) : ;;
*) do stuff here ;;
esac
done
別のbashのソリューションは、あなたが「find
を反転することができますが、find
でOKの場合には[[ ... ]]
(documentation)
for file in *; do
if [[ "$file" != Folder-??? ]]; then
do stuff here
fi
done
こんにちは@glennさん、ちょうど 'case varname ...'と '[[...]]'の中の_varname_の両方でそれを追加するだけです。シェルワード/フィールドの分割は行われないので、識別子は必ずしも必要ではありません引用されています(この文脈での引用はもちろん害ではありません)。 –
内のパターン・マッチング演算子を使用することです:ポータブルソリューションはcase
使用することですsの述語は-not
です。
find -not -name 'Folder-???' -delete
と同様に
(これはグロブマッチングをシェルに他の違いの中で再帰的に一致しますが、私はあなたが十分find
を知っていると仮定)
私はあなたがそれを行うことはできません怖いと持っています代わりに正規表現を使用します。 – TMS
可能な複製[unix/linuxシェルでのパターンマッチングの際にどうやって逆または負のワイルドカードを使うことができますか?](http://stackoverflow.com/questions/216995/how-can-i-use-inverse-or-negative -wildcards-when-unix-linuに一致するパターン) – Johan
@Tomas; extglobsは可逆です。 –