как переименовать все файлы в папке с конкретным именем расширения (рекурсивный подход)

531
King David

мы хотим переименовать все файлы в / home / DB_home (рекурсивно)

поэтому каждый файл в DB_home будет переименован с расширением .txt

пример

до изменения

/home/DB_home/hg/ir/qemu-ga /home/DB_home/td/glusterfs /home/DB_home/yr/ew/sd/cv/ntpstats /home/DB_home/yr/ew/sd/cv/proc.csv /home/DB_home/td/GF.conf /home/DB_home/td/tool.bin 

пример (после переименования)

/home/DB_home/hg/ir/qemu-ga.txt /home/DB_home/td/glusterfs.txt /home/DB_home/yr/ew/sd/cv/ntpstats.txt /home/DB_home/yr/ew/sd/cv/proc.csv.txt /home/DB_home/td/GF.conf.txt /home/DB_home/td/tool.bin.txt . . . 

как это сделать с помощью find и mv?

1

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

2
Arkadiusz Drabczyk

Как это:

find . -type f -exec mv {} {}.txt \; 
1
xenoid
find . type f -exec mv {} {}.txt \; 

... потому что ничто не говорит, что вы можете использовать {}только один раз в команде, по крайней мере, до тех пор, пока вы используете, ;а не the +.