重命名文件名末尾带有$'\ r的文件(包括文件夹中的递归文件),而无需使用重命名

杰夫

在Linux系统上,我有很多带有jpg文件的文件夹。但是我不小心使用了在Windows中创建的sh文件移动了它们。

因此,如果运行ls命令,则不需要像这样的文件和结构:

media/mugs/mug1.jpg
media/mugs/mug2.jpg
media/mugs/mug3.jpg
media/plates/plate1.jpg
media/plates/plate2.jpg
media/plates/plate3.jpg

相反,如果我运行ls命令,它们将显示以下内容,并在开头显示一个',在结尾显示'$'\ r':

media/mugs/'mug1.jpg'$'\r'
media/mugs/'mug2.jpg'$'\r'
media/mugs/'mug3.jpg'$'\r'
media/plates/'plate1.jpg'$'\r'
media/plates/'plate2.jpg'$'\r'
media/plates/'plate3.jpg'$'\r'

我无权访问安装程序,因此未安装重命名,因此我只能访问诸如find和mv之类的内置程序。

非常感激

这里

使用前进行测试。

find media -name '*'$'\r' -print0 |
while IFS= read -r -d '' file
do    mv "$file" "${file%?}"
done

有关删除最后一个字符的语法以及用于读取以find的结尾的文件名选项,请参阅参数扩展man bash部分${parameter%word}help read-r -d ''\0print0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章