繁体   English   中英

sed 替换由 gmv 引起的异常文件扩展名

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM