Заменить несколько файлов рекурсивно

269
Tom Karger

У меня есть такая структура файла:

experiment/ ├── foo.txt ├── source-foo.txt └── subdir └── foo.txt 

Я хочу взять файл source-foo.txtи заменить другие foos им. Так же, как делать, cp source-foo.txt foo.txtи cp source-foo.txt subdir/foo.txtоба сразу. Я думал, что мог бы использовать findдля этой цели что-то вроде:

cp source-foo.txt $(find . -iname foo.txt) 

Но thet возвращает ошибку:

cp: target „foo.txt“ is not a directory 

Как мне сделать эту работу?

1
Пожалуйста, посмотрите на: [Что я должен делать, когда кто-то отвечает на мой вопрос?] (Http://superuser.com/help/someone-answers) Cyrus 8 лет назад 0
Извините за задержку с ответом, я застрял в работе. Я попробую решение сегодня вечером. Tom Karger 8 лет назад 0

1 ответ на вопрос

1
Cyrus

С помощью GNU найдите:

cd experiment find . -name "foo.txt" -exec echo cp -v source-foo.txt {} \; 

Если все выглядит хорошо, удалите echo.

Вывод с echo:

cp -v source-foo.txt ./foo.txt cp -v source-foo.txt ./subdir/foo.txt 

Выход без echo:

`source-foo.txt '->` ./foo.txt' `source-foo.txt '->` ./subdir/foo.txt' 

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