質問: 以下の処理を実現できるコマンドを教えてください。 前提) ・ある親ディレクトリ内に複数の子ディレクトリがある ・子ディレクトリ名はすべて数字で構成されている。 ・子ディレクトリはすべて空でない 処理) ・子ディレクトリ名を降順(新しい順)に並べたとき、xx個を除いた子ディレクトリをすべて削除する。 例) 1~40という名前の40個の子ディレクトリが存在しているとき、降順の上位5個を除いた1~35の子ディレクトリをすべて削除する。
回答: このような感じでしょうか? 1 から 40 までのディレクトリがある。 ``` $ ls 1 11 13 15 17 19 20 22 24 26 28 3 31 33 35 37 39 40 6 8 10 12 14 16 18 2 21 23 25 27 29 30 32 34 36 38 4 5 7 9 ``` 降順の上位5個を除いた1~35の子ディレクトリをすべて削除する。 ``` $ ls | sort -rn | tail -n +6 | xargs rm -fr ``` 36 から 40 までのディレクトリだけ残る。 ``` $ ls 36 37 38 39 40 ```