特定のファイル名と一致しないファイルを削除するスクリプト

特定のファイル名と一致しないファイルを削除するスクリプト

年と月ごとにサブフォルダーに並べ替えられた 500,000 個のイメージを持つフォルダーがあります。これを行うスクリプトを作成したいと思います。

ファイル名の場合確かにファイル名を一致させ、names.logファイルを削除します。 names.logファイル名が含まれます。例:

image1.jpg
photo3.jpg
redcar.jpg
balloon2323.jpg

ちょっと…保存したいファイル名が10,000個あります。

私のサーバーにはPHPとPythonがありますが、これに最も適したものが何であるかわかりません。私は以前は何のスクリプトも書いていませんでした。誰かがこれを行うコードを提供し、それを実行する方法を教えてもらえますか?それともコマンドで達成できますか?

ベストアンサー1

これはPythonでは非常に簡単です。os.walk。警告、テストされていないコードです。名前リストには、1行につき1つの名前が含まれているとします。

#!/usr/bin/python2
import os
names_file = open('names.log')
names = set(line.rstrip('\n') for line in names_file.readlines())
names_file.close()
for root, dirs, files in os.walk('/path/to/top/directory'):
    for name in files:
        path = os.path.join(root, name)
        if os.path.isfile(path):
            if name not in names:
                print path
                #os.remove(path) # uncomment this line if you're happy with the set of files to remove

おすすめ記事