web-dev-qa-db-ja.com

fdupesまたは他の重複排除パッケージで削除された保持ファイルを移動するためのスクリプト

PhotoRecでファイルを復元した後、fdupes $ fdupes -rdNI --sameline /home/user > fdupes.txtを実行しました。システム内の約160万個のファイルが回復されたため、オプション-dを使用できませんでした。また、重複がなくなるまでfdupesを数回実行しました。

問題は、fdupes.txt(> 50 MB)に多くのエントリがあり、次の構造になっていることです。

   [+] /home/user/recup/jar/f105168728.jar
   [-] /home/user/a/path/to/dir/and/file/myfile_1.ending
   [-] /home/user/another/path/to/dir/and/file/myfile_2.ending

'recup'ファイルをディレクトリ内で順番に配置したパスに移動するスクリプトまたはすでに作成されたプログラムはありますか?

後で$ find /home/user/ -depth -type d -empty -exec rmdir {} \;も行ったため、ディレクトリの多くはそこにありません。

python(script)または別の言語で1つのステップでサブフォルダーを含むフォルダーを作成できますか?

1
Nepumuk

これが私が書いたpython3のスクリプトです:

import os
import sys
import ast
import time
import signal

n = 1
from = 'asdf'
into = 'asdf'
d = '/home/user/fdupes.txt'
f = open ( d, "r" )

from = f.readline ()
into = f.readline ()

while '/' in from or '/' in into :
 if ( '[+] /home/user/recup/' in from ) and not ( 'recup' in into ) and ( '[-] /home/user/' in into ) :
  from = from.split ( '[+] ' ) [1]
  from = from.split ( '\n' ) [0]
  into = into.split ( '[-] ' ) [1]
  end = into
  ( into, name ) = os.path.split (into)
  end = end.split ( '\n' ) [0]
  if os.path.isfile (from) :
   if not os.path.isfile (end) :
    if not os.path.isdir (into) :
     os.makedirs (into)
    os.rename (from, end)
 else :
  from = into
  into = f.readline ()
 n += 1
f.close ()
print ("Ready!")

しかし、空のhome/user/sub/dir/of/a/file/がある場合、home/user/sub/dir/のようなsthを作成することはできないと思います。そのために何度か実行する必要がありますか?

そうは思いませんが、よくわかりません...

可能であれば、私は解決策を得ました:-)

0
Nepumuk