Einzeiliger Befehl für MOVE, der dieselbe Ordnerstruktur beibehält

0

Ich habe bereits viele Lösungen für dieses Problem gefunden, aber alle kopieren und entfernen die Dateien. Ich benötige einen einzelnen Befehl, der Datei für Datei verschiebt oder kopiert und entfernt.

Ich bin nicht zu tief in der Befehlszeile, so dass ich dies unten verwalten könnte, aber ich bin nicht sicher, wie ich nach dem Kopieren entfernen soll.

find . -name "*.extension" -exec cp --parent {} ../NewFolder/ \;

Verwenden von OSX. Vielen Dank.

Marcelo Filho
quelle
1
Anstatt nur in Ihrem Exec zu kopieren, machen Sie zwei Dinge mit"cp ..... && rm {} \;"
djsmiley2k
Ich nehme an, Sie können nicht einfach verwenden mv....
djsmiley2k
1
Du hast recht! Post es als Antwort pls!
Marcelo Filho

Antworten:

1

Anstatt nur in Ihrem Exec zu kopieren, machen Sie zwei Dinge mit "cp ..... && rm {} \;"

&& in bash bedeutet 'Diesen Befehl nur dann als nächstes ausführen, wenn der vorherige Befehl erfolgreich beendet wurde (mit einem Fehlercode von 0)

djsmiley2k
quelle
1
nicht "oder niedriger", genau 0
Glenn Jackman
@ Glennjackman Ty, Befestigung. War nicht sicher
djsmiley2k
1

Um zu imitieren cp --parents, müssen Sie mkdirund mvzusammen verwenden.

find . -name "*.extension" -exec sh -c 'dir=../NewFolder/$(dirname "{}"); mkdir -p "$dir" && mv -v "{}" "$dir"' \;

Ausführliche Konsolen-Cut'n'Paste:

$ tree source
source
└── a
    ├── b
       ├── b.extension
       ├── c
          └── c.extension
       └── d
    └── e
        └── f
            └── f.extension

6 directories, 3 files
$ tree dest
dest

0 directories, 0 files
$ cd source
$ find . -name "*.extension" -exec sh -c 'dir=../dest/$(dirname "{}"); mkdir -p "$dir" && mv -v "{}" "$dir"' \;
'./a/e/f/f.extension' -> '../dest/./a/e/f/f.extension'
'./a/b/c/c.extension' -> '../dest/./a/b/c/c.extension'
'./a/b/b.extension' -> '../dest/./a/b/b.extension'
$ cd ..
$ tree source
source
└── a
    ├── b
       ├── c
       └── d
    └── e
        └── f

6 directories, 0 files
$ tree dest
dest
└── a
    ├── b
       ├── b.extension
       └── c
           └── c.extension
    └── e
        └── f
            └── f.extension

5 directories, 3 files
Glenn Jackman
quelle