ファイルがあるサブディレクトリを持つソースディレクトリがあります。私はまた別の構造を持つサブディレクトリを持つ宛先ディレクトリを持っています。ネストされたファイル構造に見つからないファイル名を見つける
fileNames = <get all file names from source directory>
for fileName in fileNames {
if <not found in destination directory> {
print fileName
}
}
上記の疑似コードはどのようにすればよいですか?
EDIT:
Example file structure:
./sourcedir/file1.txt
./sourcedir/foldera/file2.txt
./sourcedir/foldera/missingfile.txt
./destdir/file2.txt
./destdir/folderb/file1.txt
のでmissingfile.txtが印刷されなければなりません。しかし、どこかでdestdirの下にあるので、file1.txtやfile2.txtはありません。
EDIT2: 私はこれが目指したものだったPython実装を行うことができました。私は彼らを試しているときにbashの回答にいくつかの問題を抱えていました。それは、bashで簡単に行うことができますか?
import os
import fnmatch
sourceDir = "./sourcedir"
destinationDir = "./destdir"
def find_files(directory, pattern):
for root, dirs, files in os.walk(directory):
for basename in files:
if fnmatch.fnmatch(basename, pattern):
filename = os.path.join(root, basename)
yield filename
print sourceDir
for sourcefilename in find_files(sourceDir, '*'):
#if not sourcefilename.lower().endswith(('.jpg', '.jpeg', '.gif', '.png','.txt','.mov','3gp','mp4','bmp')):
# continue
shouldPrint = True
for destfilename in find_files(destinationDir, '*'):
sourceBaseName = os.path.basename(sourcefilename)
destBaseName = os.path.basename(destfilename)
if sourceBaseName == destBaseName:
shouldPrint = False
break
if shouldPrint:
print 'Missing file:', sourcefilename
[タグ:bash]と[タグ:python]とタグ付けしました。ランダムにタグを割り当てているのですか、またはこれらの言語のいずれかに具体的にソリューションが必要ですか(なぜですか?) – tripleee
良い点。私はすぐにそれらの2つのタグを使用する意味があるだろうが、私はより簡単に答えを理解することができた。多分、物事を混ぜるのを避けるために、ある言語に固執するほうが良いかもしれません。 – user317706