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.


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)


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.