Unix-Befehl zum Finden der Dateien in einem Verzeichnis, aber nicht in einem anderen?

Unix-Befehl zum Finden der Dateien in einem Verzeichnis, aber nicht in einem anderen?

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 -pathOption 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.

verwandte Informationen