GNU/Linux >> Linux の 問題 >  >> Linux

ディレクトリ内の 1000 個を除くすべてのランダム ファイルを削除する

ディレクトリ内の 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 :順不同
  • ランダム化されたリストから最初の 1000 行を tail で取り除きます;<ウル>
  • -z :リストをゼロ区切りとして扱います (sort と同じ) )
  • -n +1001 :1001 から始まる行を表示します (つまり、最初の 1000 行を省略します)
  • xargs -0 rm - 残りのファイルを削除します;
    • -0 :ゼロ区切り、再び
  • quixotic のソリューションより優れている理由*:

    <オール>
  • スペース/改行を含むファイル名に対応
  • ディレクトリを作成しようとしません (既に存在している可能性があります)。
  • ファイルを移動せず、find でリストする以外に 1000 個の「ラッキー ファイル」に触れません。 .
  • find の出力の場合にファイルの欠落を回避します \n で終わらない (改行) なんらかの理由
  • * - | sort -R | head -1000 の quixotic のクレジット 、出発点を与えてくれました。


    Linux
    1. ディレクトリ内のすべてのファイルを削除する3つの方法(拡張子が付いた1つまたは少数のファイルを除く)

    2. 検索を使用して特定のディレクトリを検索し、1つのディレクトリを除くその中のすべてのファイルを削除しますか?

    3. ディレクトリ内のすべてのファイルを解凍します

    1. ディレクトリのすべてのファイルを空にする linux コマンド

    2. Git リポジトリを削除しますが、すべてのファイルを保持します

    3. bashスクリプトで最新の3つを除くすべてのファイルを削除します

    1. すべてのサブディレクトリで一致するファイルを削除します

    2. すべてのユーザーがディレクトリにファイルを作成できるようにするが、所有者のみが削除できる

    3. /var/log をすべて削除しますか?