масса mv использование находит?

Та информация получена где-нибудь? Пакет не имеет той информации, и конфетка не заботится после того, как это находит пакет. Вы могли, вероятно, соединить его путем выяснения того, какие repos имеют пакет и затем определяют, какой имеет приоритет.

1
задан 21 August 2010 в 01:59
3 ответа

Как насчет этого?

find /home/ -name filename.gif -exec mv -f /home/shared/filename_default.gif {} \;

- исполнительный флаг имеет, находят, выполняют команду на каждом найденном объекте. {} указывает на название найденного файла. Затем необходимо завершить команду оболочки с \;. Вы могли возможно использовать ln -s к символьной ссылке те .gifs. Это могло бы быть легче, если Вы когда-нибудь хотите изменить свой общий .gif, не восстанавливая этот вид находки и перемещения.

ОТРЕДАКТИРУЙТЕ Положительные стороны Denilson ниже. Несмотря на вовлечение вопроса mv, это будет только работать однажды, прежде чем исходного файла не стало. (перемещенный) Его совет относительно команды эха является хорошим способом проверить дважды то, что собирается произойти, прежде чем это сделает.

find /home/ -name filename.gif -exec cp -p /home/shared/filename_default.gif {} \;


- Christopher Karel

1
ответ дан 3 December 2019 в 22:27
  • 1
    Необходимо использовать cp вместо mv. Кроме того, добавление echo прежде чем команда была бы хорошим тестом перед фактическим выполнением. –  Denilson Sá Maia 20 August 2010 в 22:11

# find -type f -name 'filename.gif' -exec cp -v /home/shared/filename_default.gif {} \;

Это заменит все Ваши "filename.gif" файлы содержанием "filename_default.gif", но не переименует "filename.gif" к "filename_default.gif"

Переименовать использование после команды

# rename 's/filename.gif/filename_default.gif/' $(find -type f -name 'filename.gif')

HTH

0
ответ дан 3 December 2019 в 22:27
  • 1
    Не анализировать $(find ...), это перестанет работать, если имя файла будет содержать пространство. Использовать -exec во второй раз также: find -type f -name 'filename.gif' -exec rename 's/filename.gif/filename_default.gif/' {} +. Кроме того, обратите внимание, что это использует rename если Debian и Ubuntu, которая прибывает из пакета Perl в качестве примера; там отличаются rename команды, плавающие вокруг. –  Gilles 'SO- stop being evil' 21 August 2010 в 13:16
  • 2
    @Gilles - Спасибо за разъяснения. Я буду помнить Ваши комментарии о find. Также я не знал это rename доступно только на Debian/Ubuntu. Спасибо за это также. :) –  Abhishek A 21 August 2010 в 15:24
  • 3
    @Gilles - Каково может быть возможное решение на лайнере для этой проблемы? –  Abhishek A 21 August 2010 в 15:27
find /home -name filename.gif -type f -printf "%h\0" | xargs -0 --max-args 1 cp -l  /home/shared/filename_default.gif

Это не подстановочный знак, который Вы попросили, но он действительно выполняет первую часть Вашей задачи, а именно, помещая"filename_default.gif"в целевых каталогах. Если это работает способ, которым Вы хотите, можно затем заменить'cp -l /home/shared/filename_default.gif'часть команды с'rm', и замена'-printf "%h\0"'с'-print0'для удаления исходного файла.

Это предполагает, что Вы хотите взять содержание /home/shared/filename_default.gif и помещенный то содержание в названный файл'filename_default.gif'во всех каталогах, которые содержат'filename.gif', удаление'filename.gif'(и таким образом эффективно замена'filename.gif'названный файлами с идентичным изображением в названном файле'filename_default.gif')

Если Вы хотите заменить'filename.gif'но оставьте имя тем же, затем замените'-printf "%h\0"'с'-print0'и опустите rm шаг.

1
ответ дан 3 December 2019 в 22:27

Теги

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