Wie lautet der Unix-Befehl, um Dateien zu finden, die sich direkt in einem Verzeichnis befinden, aber nicht in einem anderen? Mich interessieren nur die Dateinamen.
Danke.
Antwort1
Ich gehe davon aus, dass Sie diese Suche aus einem übergeordneten Verzeichnis durchführen möchten. In diesem Fall können Sie die -path
Option mit verwenden find
.
Beispielsweise bei der folgenden Verzeichnisstruktur
+---dir1/test1.txt
|
|--dir2/test1.txt
um Dateien zu finden, die mit 'test*' in dir1 übereinstimmen, verwenden Sie
find -path '*dir1*' -iname 'test*'
Antwort2
Um zwei Verzeichnisse zu vergleichen, können Sie Folgendes verwenden:
diff <(cd "$dir1"; find | sort) <(cd "$dir2"; find | sort)
Um dies nur auf eine Art zu tun und eine Liste der Dateien zu erstellen, versuchen Sie Folgendes:
diff <(cd "$dir1"; find | sort) <(cd "$dir2"; find | sort) \
| grep '< ./' | sed "s,< ./,$dir1/,"
Damit dies ordnungsgemäß funktioniert, sollten weder $dir1 noch $dir2 den abschließenden Schrägstrich enthalten.