保存名が10{1..40}0.txt
の一連のファイルがあります。10.txt
400.txt
➜ ls
10.txt 60.txt 110.txt 160.txt 210.txt 260.txt 310.txt 360.txt
20.txt 70.txt 120.txt 170.txt 220.txt 270.txt 320.txt 370.txt
30.txt 80.txt 130.txt 180.txt 230.txt 280.txt 330.txt 380.txt
40.txt 90.txt 140.txt 190.txt 240.txt 290.txt 340.txt 390.txt
50.txt 100.txt 150.txt 200.txt 250.txt 300.txt 350.txt 400.txt
100から300の間ですが、100に分割できないすべてのファイルを削除したいと思います。今すぐ。離れる{1..9}0.txt
, 100.txt
, 200.txt
, 3{1..9}0.txt
:
rm 110.txt 130.txt 150.txt 170.txt 190.txt 220.txt 240.txt 260.txt 280.txt
120.txt 140.txt 160.txt 180.txt 210.txt 230.txt 250.txt 270.txt 290.txt
zshでは、100から300までのファイルをglobでき、オプションセットを使用して<100-300>.txt
100に分割できるファイルをglobできます。^(*00).txt
extendedglob
ファイルグローバルパターンを順番にリンクできますか?したがって、100〜300個のファイルをglobしてから、残りのファイルをglobして00
?
単一のglob内でこれを行う方法は除外が提供される<100-300>.txt~(*00).txt
場所です~
(参照zsh ドキュメント)。編集:グローバルゴルフをプレイすると、次のように単純化できます<10-30>0*~*00*
。
ベストアンサー1
$ touch {10..400..10}.txt
$ print -rC1 -- <100-300>.txt(e['(( $REPLY:r % 100 != 0 ))'])
110.txt
120.txt
130.txt
140.txt
150.txt
160.txt
170.txt
180.txt
190.txt
210.txt
220.txt
230.txt
240.txt
250.txt
260.txt
270.txt
280.txt
290.txt
上記の内容でtouch
ファイルが生成されます。
次の行のビットは、<100-300>.txt
100から300の数字で始まるファイルを選択します。
glob修飾子は、100で割り切れない(e['(( $REPLY:r % 100 != 0 ))'])
「root」(拡張子のない名前、via経由の名前)ファイル名を選択します。:r
もちろん、glob修飾子でもこれを行うことができます。
*.txt(e['(( r=$REPLY:r, r >= 100 && r <= 300 && r % 100 != 0 ))'])