arv*_*vil 10 scripting rename files
我有一个 PHP 代码,它生成 wget 将在其上附加其日志的文件名。我生成了 2000 多个文件,但问题是我无法使用它们,因为我错误地将其PHP_EOL作为其名称的一部分,该代码将添加
LF/line feed/%0A到其名称中
此类文件名的示例(当通过浏览器访问时,当放在 /var/www/html 上时)http://xxxx/wget_01_a%0a.txt注意%0a扩展名之前的
我搞砸了,我希望有一个重命名批处理可以搜索所有文件,如果找到line feed它会在没有换行符的情况下重命名它,所以它只是http://xxxx/wget_01_a.txt
我不太确定如何处理这个问题,因为当我ls使用腻子时,所有不限于不需要的字符的特殊字符似乎都变成了?,我只想针对该换行符。
dha*_*hag 13
使用renameCentOS 6 提供的 util-linux 中的实用程序,并假设为 bash:
rename $'\n' '' wget_*
Run Code Online (Sandbox Code Playgroud)
这要求从列出的文件的名称中删除换行符。我建议在一个小的子集上试用它以确保它做你想要它做的事情(注意rename在 CentOS 7 上支持一个-v开关来显示它正在做的更改)。
相反,如果您使用的是提供基于 Perl 的发行版rename:
rename -n 's/\n//g' wget_*
Run Code Online (Sandbox Code Playgroud)
然后运行而不-n实际执行重命名。
小智 5
在已经回答的基础上,我将其概括为通过将 find 命令与 rename 相结合来重命名当前文件夹和子文件夹中包含换行符的所有文件 -
find -name $'*\n*' -exec rename $'s|\n| |g' '{}' \;
Run Code Online (Sandbox Code Playgroud)
在这里,find 命令查找所有包含换行符的文件,而 rename 命令用空格替换名称中的每个换行符。
对于任何其他此类有问题的字符(例如回车符 (\r))也可以执行相同的操作。