[英]Sed replace unusual file extension arising from gmv
由于在大型嵌套目录上使用 gmv 进行扁平化,我将许多重复文件分离出来并带有扩展名“._1_”“._2_”等( .... ._n_ )
例如"a.pdf.\\_1\\_"
即它的
a(dot)pdf(dot)(反斜线)1(反斜线)
与
a(dot)pdf(dot)1
我想将其减少回“a.pdf”
我试过类似的东西
sed -i .bak "s|.\_1\_||" *
这通常是可靠的,不需要转义字符。 但是它给了我“错误:非法字节序列”
感谢帮助修复。 这是在 Mac OSX 终端上。 理想情况下,我想要一个通用的解决方案来修复 ._*_ 形式,其中 * 从 1 到 9
这里有两个挑战。
如何处理重复的basename
(后缀“ 1 ”、“ 2 ”……主要是添加以指定单个文件的不同部分 - 可能是 PDF 等不同的页面。执行将剥离文件的重命名可能导致一些重要文件消失。
如何处理"error: illegal byte sequence"
,这表明某些特殊字符(unicode)是文件名的一部分。 通常是值为 >= \\0xc0
ASCII 字符,无法根据当前本地进行解码。 文件名被转义的事实(根据 OP "a.pdf.\\_1\\_"
可能暗示附加字符,未显示(假设这不是由 OP 添加的)。
建议的解决方案是重命名文件,并放置“序列”部分,使文件在扩展名之前是唯一的,允许使用扩展名来确定文件类型。
一个.pdf。 1 => 1个.PDF
执行此任务的重命名命令是:
重命名 's/(. ).pdf.(_. _)/$1$2.pdf/' .pdf._ _
根据需要调整文件名列表,运行前使用-n
进行验证。
rename -n s/.\_1\_// *.*_1_
工作(删除 -n 一次测试)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.