ディレクトリ内の拡張子がpdfのファイルを除くすべてのファイルを削除します

ディレクトリ内の拡張子がpdfのファイルを除くすべてのファイルを削除します

次の内容を含むディレクトリがあります:

x.pdf
y.zip
z.mp3
a.pdf

x.pdfとを除くすべてのファイルを削除したいのですa.pdfが、ターミナルからこれを実行するにはどうすればよいですか? サブディレクトリがないため、再帰は必要ありません。

答え1

cd <the directory you want>
find . -type f ! -iname "*.pdf" -delete
  • 最初のコマンドは、ファイルを削除したいディレクトリに移動します。
  • .pdf2番目のコマンドは、ファイル名がで終わるファイルを除くすべてのファイルを削除します。

たとえば、tempホーム フォルダーに次のディレクトリがある場合:

cd ~/temp

次にファイルを削除します:

find . -type f ! -iname "*.pdf" -delete

これにより、 を除くすべてのファイルが削除されますxyz.pdf

これら 2 つのコマンドを組み合わせると、次のことが可能になります。

find ~/temp -type f ! -iname "*.pdf" -delete

.は現在のディレクトリです。末尾に が!付いているファイルを除くすべてのファイルを取得することを意味します。ディレクトリではなくファイルのみを選択します。削除することを意味します。.pdf-type f-delete

注意: このコマンドは、現在のディレクトリとすべてのサブディレクトリにあるすべてのファイル (PDF ファイルを除く、隠しファイルを含む) を削除します。!は の前に来なければなりません-name。 は-nameのみを含みます.pdfが、 はと の-iname両方を含みます。.pdf.PDF

現在のディレクトリのみを削除し、サブディレクトリは削除しない場合は、次を追加します-maxdepth 1:

find . -maxdepth 1 -type f ! -iname "*.pdf" -delete

答え2

の拡張シェルグロビングを使用するとbash、以下の拡張子以外のファイルも削除できます。.pdf

rm -- *.!(pdf)

@pts が指摘しているように、--文字はコマンド オプションの終了を示し、まれにファイル名が文字で始まる場合でもコマンドを安全に実行できます-

拡張子のないファイルと、拡張子以外のファイルを削除したい場合は.pdf、@DennisWilliamsonが指摘したように、次のようにすることができます。

rm -- !(*.pdf)

拡張グロビングはデフォルトで有効になっているはずですが、そうでない場合は次のようにして有効にすることができます。

shopt -s extglob

特にこれをスクリプト内で使用する場合、式が何にも一致しない場合(つまり、ディレクトリ内にPDF以外のファイルがない場合)には、デフォルトではグロブが展開されずにコマンドに渡されrm、次のようなエラーが発生することに注意することが重要です。

rm: cannot remove `*.!(pdf)': No such file or directory

このデフォルトの動作はnullglobシェルオプションを使用して変更できますが、これには独自の問題があります。より詳細な説明については、NullGlob - グレッグのウィキ

答え3

ゴミ箱に削除:

$ cd <the directory you want>
$ gvfs-trash !(*.pdf)

またはmvコマンドで(ただし、この方法では.trashinfo情報が記録されないためゴミ箱から復元することはできません。つまり、ファイルを別の場所に移動したことになります。行き先以下に示すとおりです。

mv !(*.pdf) ~/.local/share/Trash/files

答え4

bash の GLOBIGNORE を使用します:

GLOBIGNORE=x.pdf:a.pdf
rm *
unset GLOBIGNORE

bash のマニュアルページより:

グロビニョーレ:

            セットを定義するパターンのコロンで区切られたリスト
            パス名展開で無視されるファイル名。

簡単なテスト:

mkdir /tmp/foooooo
cd /tmp/foooooo
touch x.pdf y.zip z.mp3 a.pdf
GLOBIGNORE=x.pdf:a.pdf
ls -1 *

出力:

y.zip
mp3 の

関連情報