Как переименовать файлы в разных каталогах с одинаковыми именами, используя find - PullRequest
0 голосов
/ 04 мая 2019

У меня есть файлы с именем test.txt в разных каталогах, подобных этому

./222/test.txt
./111/test.txt

Я хочу переименовать все test.txt в info.txt

Я пытался использовать это

find . -type f -iname 'test.txt' -exec mv {} {}info \;

Я получаю test.txtinfo

1 Ответ

2 голосов
/ 04 мая 2019

Ваша идея верна, но вам нужно использовать -execdir вместо просто -exec, чтобы упростить это.

find . -type f -iname 'test.txt' -execdir mv {} info.txt ';'

Это работает как -exec с той разницей, что данная команда оболочки выполняется с каталогом найденного пути в качестве текущего рабочего каталога и что {} будет содержать базовое имя найденного пути без его пути. Также обратите внимание, что эта опция является нестандартной (не POSIX-совместимой).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...