У меня куча папок в папке A
. Я хочу переместить файлы из всех этих папок в A
.
Или же
Я хочу вырезать все файлы из дочерних папок и вставить их в родительскую папку.
Как это сделать?
mv */* .
не будет перемещать файлы из подпапки подпапок.
У меня куча папок в папке A
. Я хочу переместить файлы из всех этих папок в A
.
Или же
Я хочу вырезать все файлы из дочерних папок и вставить их в родительскую папку.
Как это сделать?
mv */* .
не будет перемещать файлы из подпапки подпапок.
Ответы:
Перейдите в свой A
каталог и запустите
find . -mindepth 2 -type f -print -exec mv {} . \;
что означает «найти все файлы в этом каталоге и его подкаталогах и выполнить mv с целевым каталогом. для каждого найденного файла переместить их в текущий каталог.
find
вы можете быть немного более элегантным и не создавать mv
процесс для каждого файла:find A -mindepth 2 -type f -exec mv -t A \{\} +
find . -mindepth 2 -type f -print -exec mv --backup=numbered {} . \;
Хорошо, вы можете создать файл и назвать его «cutme» (чтобы создать файл с именем cutme в типе терминала nano cutme
. Чтобы сохранить его, нажмите CTRL + X, затем нажмите ENTER.), Например, и вставьте в него следующее, предполагая, что:
find * -type f -print -not -type d -and -not -regex 'cutme' -exec mv {} .. \;
Обратите внимание на название cutme внутри строки. Он должен быть таким же, как скрипт, который вы запустите.
После создания файла и вставки вышеуказанной строки запустите следующее в той же папке, что и скрипт:
chmod +x cutme
, Это даст новый файл флаг «исполняемый файл» , так что вы можете выполнить это следующим образом : ./cutme
.
mv */* .
:?