Как эффективно переместить все каталоги в один каталог в одной папке?

У меня есть 100 файлов в одной папке, включая папку с именем «target». Я хочу перенести все файлы в этой папке в целевую папку (кроме самой целевой папки).

Есть ли эффективная команда терминала для этого?

5
задан 29 March 2012 в 06:01

3 ответа

Если в вашем каталоге есть только файлы (и цель каталога), просто используйте mv, а не find:

mv * target

Он будет жаловаться, что «target» не может будет перемещен сам по себе, но впоследствии все файлы будут в цели.

0
ответ дан 29 March 2012 в 06:01

Это также работает:

find . -maxdepth 1 ! -name target ! -name . -exec mv "{}" target \;

Одним из ключевых преимуществ find по сравнению с завершением работы bash является то, что вы получаете скрытые файлы одновременно. mv * ... не будет этого делать.

Возможно, вы могли бы пойти с чем-то вроде:

mv -t target * .[^.]*

Или, как отметил Джеймс, вы могли бы сократить команду поиска, чтобы смотреть только на файлы ... И как указывал LoremIpsum, если существуют миллиарды их использование xargs было бы несколько более эффективным:

find . -maxdepth 1 -type f -print0 | xargs -0 mv -t target
0
ответ дан 29 March 2012 в 06:01

Используйте это

$ mv target ..
$ mv * ../target
$ mv ../target .
0
ответ дан 29 March 2012 в 06:01

Другие вопросы по тегам:

Похожие вопросы: