クォーテーション付きのファイルを一気に削除する方法

ライフ

大量のクォーテーション付きファイルを一気に削除したい。

なのに「引数リストが長すぎる」とエラーが出て削除できない。

 

結局pythonで解決できたのでその方法をメモしておく。

 

作戦開始

現状は、大量のクォーテーション付きtxtファイル、そして消したくないファイルとディレクトリがある。

 

まずは、”ディレクトリ” じゃなくて ”ファイル”、消したくないファイルたちを退避用のディレクトリに移しておく。

mkdir TAIHI
mv john_passwords.txt TAIHI
mv nothing.txt TAIHI
mv rockyou.txt TAIHI

こうして、カレントディレクトリには(消したい)大量のクォーテーション付きファイルと、ディレクトリのみになった。

 

ちなみに、ここでremoveコマンドを使って「remove *」ってやると引数リストが長すぎるというエラーが出て削除できない。

# echo ./* | xargs rm -f」もやってみたけど無理だった。

 

そこでpythonの出番。

ターミナルにpython3と打ち込んで起動。

 

>>> import os
>>> l = os.listdir()
>>> for i in l:
...     if '.txt' in i:
...             os.remove(i)こ

これで完了。

大量にあったクォーテーション付きファイルは一気に削除された。

 

途中に出てきたos.listdir()は、カレントディレクトリ内の、ファイル名及ディレクトリ名が要素となったリスト。

 

if文のところで「”.txt” を含むなら削除する」ふうにしてる。

汎用的に、ここを.txtじゃなくてもっと他のワードでフィルタリングしてもいい。

 

例えば自分の今回の場合は、どのtxtファイルも頭に ”aaa” がついてるから、if文で ”.txt” の代わりに ”aaa” としてもいいということ。

 

一応の注意

まず、removeコマンド、特に「remove *」では、ディレクトリは削除されない

 

経緯

先にも言ったけど、crunchコマンドをミスってカレントディレクトリに13文字の文字列を大量に生成してしまったのが事の発端。

 

crunchコマンドは、ブルーとフォースアタックで使う辞書(ワードリスト)が作れるコマンド。

その結果を全てカレントディレクトリに排出してしまった(余裕で1000個以上はある)。

 

タイトルとURLをコピーしました