Mv файлы с | xargs

Я просто пытаюсь переместить группу файлов (не символических ссылок) из моей папки / etc / apache / sites-enabled в папку / etc / apache / sites-available со следующим:

/etc/apache2/sites-enabled$ find . -maxdepth 1 -type f | xargs mv {} ../sites-available/

но я ubuntu n00b и получаю эту ошибку:

mv: target `./real-file' is not a directory

где 'real-file' - это тестовый файл, который я настроил в своей среде разработки. Я пытаюсь навести порядок в чужом беспорядке на рабочем сервере; -)

17
задан 23 June 2014 в 19:30

3 ответа

Вы могли попробовать -exec опция с find команда,

/etc/apache2/sites-enabled$ sudo find . -maxdepth 1 -type f -exec mv {} /etc/apache2/sites-available \;

Для движущихся файлов, принадлежавших корню, Вам нужно sudo полномочия.

, Если Вы хотите использовать xargs, команда тогда добавляет -I опция к нему.

find . -maxdepth 1 -type f | sudo xargs -I {} mv {} /etc/apache2/sites-available/
22
ответ дан 23 June 2014 в 19:30

Идеально необходимо использовать-print0 с находкой, таким образом, имена файлов с пробелами не завинчивают вещи.

, Например, это должно работать:

find . -whatever-flags-go-here -print0 | xargs -r0 mv -t target-directory
3
ответ дан 23 June 2014 в 19:30

можно также использовать другой способ выполнить то же, но с дополнительная производительность :

find . -maxdepth 1 -type f -exec mv {} /etc/apache2/sites-available \+

Примечание, которое это заканчивает \+, что означает, чтобы команда находки получила вывод и разворачивает в {} выполнение, что Вы хотите, таким образом Вы избегаете, чтобы эти две опции (\; = для каждой записи И передающий по каналу в новую команду xargs)

Вот были объяснением (можно также проверить руководство man find)

- исполнительная команда {} + Этот вариант - исполнительное действие выполняет указанную команду на выбранных файлах, но командная строка создается путем добавления каждого выбранного имени файла в конце; общее количество вызовов команды будет намного меньше, чем количество подобранных файлов. Командная строка создается почти таким же способом, которым xargs создает свои командные строки. Только один экземпля𠆘 {} ’ позволяется в рамках команды. Команда выполняется в начальном каталоге.

0
ответ дан 7 August 2019 в 08:19

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

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