Как рекурсивно изменить расширение нескольких файлов? - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть файлы .htaccess.bak, .htaccess в моем веб-каталоге.

Я хочу рекурсивно заменить .htaccess.bak на .htaccess

./test.com/.htaccess.bak
./test.com/.htaccess
./test.com/application/.htaccess.bak
./test.com/application/.htaccess

1 Ответ

0 голосов
/ 08 апреля 2020

Если у вас есть разрешение на запись в каждый каталог, это должно работать практически на любой системе, кроме windows.

cd webdirectory
find . -name .htaccess.bak | ( while read filename; do
d=`dirname "$filename"`
mv "$filename" "$d/.htaccess"
chmod 600 "$d/.htaccess" # if the perms aren't quite right on .htaccess.bak
done
)

Однако может произойти сбой, если любой найденный компонент пути содержит " символ. Если это так, то вы можете использовать опцию find "cd to the directory" и затем сделать что-то вроде этого:

find . -name .htaccess.bak -execdir mv {} .htaccess \;

На linux и macOS, команда find имеет -execdir опция в дополнение к опции -exec.

...