1

多数のファイルが生成されるシミュレーションを実行しています。ファイルの名前は次のようになります: a-*000.dat, a-*100.dat.....a-*500.dat....a-*900.dat* は 2 桁の数字です。a-*000 と a-*500 を保持し、それ以外はすべて削除します。私は試しrm a-*{100,200,300,400,600,700,800,900}てみましたが、うまくいきました。しかし、* の値ごとにこれを実行する必要があります。何度も実行するのを避けることができるように、シェル スクリプトを提案できますかrm

PS: この質問が明確で、客観的で、具体的であることを願っています。この質問を削除/報告する前に、具体的なフィードバックを提供することを検討してください。

マドゥカル

4

3 に答える 3

0

次の方法でこれを達成できると思います:

rm a-*[1-4,6-9]00.dat

あなたの試みについて: rm a-*{100,200,300,400,600,700,800,900}.dat、プレフィックスのすべての値に対して実行する必要がある理由がわかりません。文字どおりに入力すると問題なく動作するはずです-*インプレースで、上記の私の提案と同等です(少しだけ長くなります)。

補足として、実際に複数回実行する必要がある場合は、スクリプトでループrmを使用して自動化できます。for

于 2013-03-01T06:29:38.160 に答える
0
find -regextype posix-basic -regex './a-[0-9]\{3\}00.dat' -not -regex './a-*[0,5]\{1\}00.dat' - exec rm -i {} \;

見た目は悪いですが、基本的な正規表現では不十分な場合は拡張可能です。

于 2013-03-01T07:00:55.467 に答える
0

ここで詳しく説明されている bash の拡張グロビングが必要です: http://www.linuxjournal.com/content/bash-extended-globbing

鍵は

shopt -s extglob

この後、グロビングに正規表現を使用できます。注意して使用し、すべてを消去する前に ls で確認してください。

于 2013-03-01T06:20:32.197 に答える