Та информация получена где-нибудь? Пакет не имеет той информации, и конфетка не заботится после того, как это находит пакет. Вы могли, вероятно, соединить его путем выяснения того, какие repos имеют пакет и затем определяют, какой имеет приоритет.
Как насчет этого?
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
# 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
$(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
find
. Также я не знал это rename
доступно только на Debian/Ubuntu. Спасибо за это также. :)
– Abhishek A
21 August 2010 в 15:24
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
шаг.
cp
вместоmv
. Кроме того, добавлениеecho
прежде чем команда была бы хорошим тестом перед фактическим выполнением. – Denilson Sá Maia 20 August 2010 в 22:11