查找和重命名文件


2

我大约有1000个文件包含*名称中的字符。我需要找到这些文件,并替换*-。我正在使用HP UX v11。我正在使用以下命令

find . -type f -name '*\**' -exec bash -c 'f="$1"; mv "$f" "${f//\*/-}"' - '{}' \;

有人告诉我它可以工作,但是对我来说,它会将完整文件重命名为,-而不是替换*

GNU bash版本2.04.0(1)-发行版(hppa2.0w-hp-hpux11.00)


确保您正在BASH下运行它。您还可以在HP主机上检查BASH版本吗?
anubhava 2014年

谢谢,我用bash版本信息更新了问题
RustywithUnix 2014年

好的,那是很老的BASH。您可以运行find . -type f -name '*\**'以查看是否列出了正确的文件。
anubhava 2014年

是的,列出了正确的文件。问题在于一旦找到重命名。
RustywithUnix14年

1
我升级到4.2来砸和原来的命令作品
RustywithUnix

Answers:


0

试试这个命令find命令:

find . -type f -name '*\**' -exec bash -c 'f="$1"; echo mv "$f" `echo "$f"|tr "\*" "-"`' - '{}' \;
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.