bash / shell专家可以帮助我吗?每次我使用PDF将大型pdf文件(例如其名称为X.pdf
)拆分为单独的页面,其中每个页面都是一个pdf文件,它会创建具有此模式的文件
"X 1.pdf"
"X 2.pdf"
"X 3.pdf" etc...
文件名" X"以上是原始文件名,可以是任何内容。然后在名称后添加一个空格,然后添加页码。页码始终从1开始,最多到页数。 adobe PDF中没有选项可以更改此内容。
我需要运行一个shell命令来简单地删除/删除所有" X"部分,只留下数字,就像这样
1.pdf
2.pdf
3.pdf
....
100.pdf ...etc..
模式匹配不好,不确定我需要的正则表达式。
我知道我需要像
这样的东西for i in *.pdf; do mv "$i$" ........; done
这是.......
部分,我不知道该怎么做。
这只需要在Linux / Unix系统上运行。
答案 0 :(得分:4)
使用sed ..
for i in *.pdf; do mv "$i" $(sed 's/.*[[:blank:]]//' <<< "$i"); done
通过rename
rename 's/.*\s//' *.pdf
答案 1 :(得分:4)
您可以remove所有内容(包括)变量中的最后一个空格:
${i##* }
那个&#34;星空&#34;在双重哈希之后,意思是&#34;任何后跟空格&#34;。 ${i#* }
会删除第一个空格。
所以运行此检查:
for i in *.pdf; do echo mv -i -- "$i" "${i##* }" ; done
如果看起来不错,请移除echo
。 Gordon Davisson建议的-i
会在覆盖之前提示您,--
表示选项结束,如果您的文件名以-
开头,则会阻止事件爆发。< / p>
答案 2 :(得分:2)
如果您只想对文件(或目录)进行批量重命名,并且不介意使用外部工具,那么这是我的:rnm
执行所需操作的命令是:
rnm -rs '/.*\s//' *.pdf
.*\s
选择最后一个空格之前(和)的部分,并用空字符串替换它。
注意:强>
它不会覆盖任何现有文件(如果找到具有目标名称的现有文件则抛出警告)。
此操作是安全的。您可以使用rnm
取回上一个rnm -u
命令所做的更改。
rnm
。