1

Я хотел бы переписать файлы в дереве каталогов, рекурсивно.

Те, которые я хотел бы перезаписать, соответствуют имени файла "x_alpha * .png" и имеют размер ровно 456 байт.

Есть ли способ рекурсивно искать их в дереве каталогов и перезаписывать их ссылочным файлом, например, "e:\mydir\good.png"

Я использую Windows 7, но у меня есть UnxUtils, поэтому я тоже могу их использовать.

Я ищу что-то вроде этого, сгенерированное автоматически:

copy /y e:\mydir\good.png e:\mydir\a\b\c\x_alpha0023.png
copy /y e:\mydir\good.png e:\mydir\e\f\g\x_alpha0045.png
copy /y e:\mydir\good.png e:\mydir\h\x_alpha0248.png

2 ответа2

1

Я не знаю UnxUtils, но это может быть сделано с Cygwin с:

find /cygdrive/e/mydir/ -type f -name "x_alpha*.png" -size 456c -exec cp /cygdrive/e/mydir/good.png {} \;

Вы могли бы, вероятно, экстраполировать, как это сделать с UnxUtils.

Сначала проверьте это, выполнив следующее перед перезаписью файлов:

find /cygdrive/e/mydir/ -type f -name "x_alpha*.png" -size 456c
0

Вы также можете сделать это в Power Shell, так как вы используете Windows 7.

dir -recurse x_alpha*.png | where-object { $_.Length -eq 456 } | foreach-object { copy-item -force e:\mydir\good.png $_.FullName }
dir -recurse x_alpha*.png   (to see the results)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .