Ich habe ein Quellverzeichnis mit Unterverzeichnissen mit Dateien. Ich habe auch ein Zielverzeichnis mit Unterverzeichnissen mit einer anderen Struktur.Suche nach fehlenden Dateinamen in verschachtelter Dateistruktur
fileNames = <get all file names from source directory>
for fileName in fileNames {
if <not found in destination directory> {
print fileName
}
}
Wie kann ich Pseudocode oben tun?
EDIT:
Example file structure:
./sourcedir/file1.txt
./sourcedir/foldera/file2.txt
./sourcedir/foldera/missingfile.txt
./destdir/file2.txt
./destdir/folderb/file1.txt
So sollte missingfile.txt gedruckt werden. Aber nicht file1.txt oder file2.txt, da sie irgendwo unter destdir zu finden sind.
EDIT2: Ich schaffte es, eine Python-Implementierung zu machen, das war, was angestrebt wurde. Ich hatte einige Probleme mit den Bash-Antworten, wenn ich sie probierte. Kann es in bash einfacher gemacht werden?
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
Sie haben dies als [tag: bash] und [tag: python] getaggt. Ordnen Sie Tags zufällig zu oder benötigen Sie eine spezifische Lösung in einer dieser Sprachen (warum?)? – tripleee
Guter Punkt. Ich hätte sofort gedacht, dass diese beiden Tags sinnvoll sind, damit ich die Antwort leichter verstehen kann. Vielleicht ist es besser, bei einer Sprache zu bleiben, um zu vermeiden, dass Dinge zu sehr gemischt werden. – user317706