Однострочная команда для перемещения с сохранением той же структуры папок

Я уже нашел много решений этой проблемы, но все они копируют и после удаления файлов. Мне нужна одна команда, которая перемещает или копирует и удаляет файл за файлом.

Я не слишком глубоко в командной строке, чтобы я мог управлять этим, но я не уверен, как удалить после копирования.

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

использование OSX. Благодаря.

4
задан Marcelo Filho
24.01.2023 15:14 Количество просмотров материала 2903
Распечатать страницу

2 ответа

вместо того, чтобы просто копировать в exec, сделайте две вещи с "cp ..... && rm {} \;"

&& в bash означает ' выполнить следующую команду, только если предыдущая команда завершилась успешно (с кодом ошибки 0)

1
отвечен djsmiley2k 2023-01-25 23:02

для того чтобы передразнить cp --parents, вы должны использовать mkdir и mv вместе.

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

подробный консоли скопируйте'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
1
отвечен glenn jackman 2023-01-26 01:19

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх