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

出力の生成中にフィルタリングされたリストを削除しますか?

多数のファイル拡張子が混在するディレクトリがあり、特定のファイル拡張子(grep *.mp3など)をリストしたいと思います。 )そしてリストしている間、出力でそれらを削除します。どうすればそれができますか、または重複がある場合は、遠慮なくタグを付けてください。

例:

grep "*.mp3" . | rm -fr 

承認された回答:

3つのmp3があるディレクトリから始めましょう ファイル:

$ ls *mp3
a.mp3  b.mp3  c.mp3

削除するものをリストした後、それらを削除しましょう:

$ find . -maxdepth 1 -name '*.mp3' -printf 'Deleting %p\n' -delete
Deleting ./a.mp3
Deleting ./b.mp3
Deleting ./c.mp3

これが行われた後、mp3 ファイルがなくなった:

$ ls *mp3
ls: cannot access '*mp3': No such file or directory

仕組み

  • `検索。

    これにより、findが開始されます 指図。現在のディレクトリ.でファイルを検索します。 。

  • -maxdepth 1

    デフォルトでは、find サブディレクトリを再帰的に検索します。これはそれをしないように指示します。 -maxdepth 1を使用 、コマンドfind 現在のディレクトリで見つかったものだけを調べ、現在のディレクトリのサブディレクトリは調べません。

  • -name '*.mp3'

    これにより、findは.mp3のファイルのみを検索するように指示されます。 拡張機能。

  • -printf 'Deleting %p\n'

    これは、見つかった各ファイルに関するメッセージを出力するようにfindに指示します。

    もちろん、必要に応じてこれを別のメッセージに変更することもできます。メッセージが不要な場合は、このオプションを完全に省略できます。

  • -delete

    これにより、findは各ファイルを削除するように指示されます。

大文字と小文字を区別しない検索

.MP3という名前のファイルも検索する場合 または.Mp3 など、大文字と小文字を区別しない検索が必要で、-inameを使用します :

find . -maxdepth 1 -iname '*.mp3' -printf 'Deleting %p\n' -delete

Ubuntu
  1. 同じ行に複数行の出力を印刷する方法は?

  2. ゴミ箱が見つかりませんか?

  3. ファイルシステムでMacアドレスを見つけますか?

  1. 検索結果を変数としてシェルスクリプトに保存しますか?

  2. OS が仮想環境で実行されているかどうかを調べる

  3. LVM で論理ボリュームを保持する物理ボリュームを見つける方法

  1. コマンドラインでのファイルの検索(ハウツー)

  2. Linuxで特定のファイルを提供するパッケージを見つける方法

  3. Ubuntu –Xorg.confを見つける方法。それはどこにある?