ディレクトリ内の 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 のクレジット 、出発点を与えてくれました。