Как быстро перемещать все каталоги в один каталог в одной папке?

Вы можете получить свое имя хоста от вашего DHCP-сервера - это часть спецификации DHCP.

https://tools.ietf.org/html/rfc1533#section-3.14

"Этот параметр указывает имя клиента"

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

3 ответа

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

mv * target

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

9
ответ дан 25 May 2018 в 13:08
  • 1
    +1. Тем не менее, я бы использовал target/, чтобы убедиться, что я случайно не переименовал все файлы в «target». – zpletan 29 March 2012 в 08:25
  • 2
    До тех пор, пока у вас есть несколько файлов для перемещения, это не должно быть проблемой. Однако это не повредит. – James Henstridge 29 March 2012 в 09:00
  • 3
    Это не обрабатывает скрытые файлы. – Oli♦ 29 March 2012 в 17:13

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

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

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

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

mv -t target * .[^.]*

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

find . -maxdepth 1 -type f -print0 | xargs -0 mv -t target
2
ответ дан 25 May 2018 в 13:08
  • 1
    Вы могли бы, вероятно, упростить это, чтобы find . -maxdepth 1 -type f -exec ... выбрать по типу, а не исключать конкретные имена. – James Henstridge 29 March 2012 в 09:02
  • 2
    Может быть, xargs тоже можно использовать? – LoremIpsum 29 March 2012 в 13:14

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

$ mv target ..
$ mv * ../target
$ mv ../target .
1
ответ дан 25 May 2018 в 13:08

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

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