/ / Holen Sie sich den gesamten Inhalt eines Ordners mit Unterordner, der mit bash - bash in ein anderes Verzeichnis kopiert wurde

Holen Sie sich den gesamten Inhalt eines Ordners mit Unterordner, der mit bash - bash in ein anderes Verzeichnis kopiert wurde

Ich habe ein Verzeichnis, das viele Ordner enthältdas haben wieder Unterordner und dann gibt es einige Dateien. Kann ich ein Bash-Skript schreiben, das alle Dateien aus dem angegebenen Verzeichnis in einen einzigen Ordner kopiert? Damit muss ich nicht durch immer einen einzigen Ordner navigieren und den Inhalt in einen anderen Ordner kopieren.

Antworten:

1 für die Antwort № 1

Im obersten Verzeichnis, unter dem die Dateien kopiert werden sollen:

find . -type f -exec cp {} /some/new/location ;

Findet alle normalen Dateien und kopiert sie dann in /some/new/location


0 für die Antwort № 2

Sie können mit find alle Dateien im Ordner auflisten:

find ./source -type f

und dann die Ausgabe als Argument für cp verwenden, würde es so aussehen:

cp $(find ./source -type f) destination

Es würde ein Problem geben, wenn sich einige Dateien in der ursprünglichen Verzeichnisstruktur mit einem Namen mit einem Konflikt befinden. In diesem Fall würde cp sich weigern, weitere Dateien mit dem gleichen Namen mit folgendem Fehler zu kopieren:

cp: überschreibt nicht gerade erstellte destination/t22" with./source/test/t2/t22 "

Um Kopien von Dateien mit demselben Namen zu erstellen, können Sie die Backup-Option wie folgt verwenden:

cp --backup=numbered $(find ./source -type f) destination

Wenn Sie sehen möchten, was passiert, verwenden Sie die Option -v (ausführlich)

cp -v --backup=numbered $(find ./source -type f) destination