ディレクトリ内の 1000 個を除くすべてのランダム ファイルを削除する
コード:
find /path/to/dir -type f -print0 | sort -zR | tail -zn +1001 | xargs -0 rm
説明:
<オール>/path/to/dir 内のすべてのファイルを一覧表示する find で;<ウル> print0 :\0 を使用 (ヌル文字 ) 行区切り記号として;そのため、スペースや改行を含むファイル パスによってスクリプトが壊れることはありませんsort でファイルリストをシャッフルする;<ウル> -z :\0 を使用 \n の代わりに区切り文字として (ヌル文字) (改行)-R :順不同tail で取り除きます;<ウル> -z :リストをゼロ区切りとして扱います (sort と同じ) )-n +1001 :1001 から始まる行を表示します (つまり、最初の 1000 行を省略します)xargs -0 rm - 残りのファイルを削除します;-0:ゼロ区切り、再び
quixotic のソリューションより優れている理由*:
<オール>find でリストする以外に 1000 個の「ラッキー ファイル」に触れません。 .find の出力の場合にファイルの欠落を回避します \n で終わらない (改行) なんらかの理由
* - | sort -R | head -1000 の quixotic のクレジット 、出発点を与えてくれました。