Ale*_*yMK 1 regex unix linux command-line
问候,
我有一个目录,里面有pdf列表:
file1.pdf, file2.pdf, morestuff.pdf ... etc.
我想将这些pdf转换为png,即
file1.png, file2.png, morestuff.png ... etc.
基本命令是,
convert from to
,
但我无法转换为重命名为相同的文件名.明显的"我希望它以这种方式工作"是
convert *.pdf *.png
但显然这不起作用.我的思维过程是我应该在这里使用正则表达式分组,想一想
convert (*).pdf %1.png
但这显然不是正确的语法.我想知道正确的语法是什么,以及是否有一个更好的方法(不需要跳转到perl或python),我忽略了.
谢谢!
for files in *.pdf
do
if [ -f "$files" ];then
convert "$files" "${files%.pdf}.png"
fi
done
Run Code Online (Sandbox Code Playgroud)
如果你需要递归地做,
find /path -type f -iname "*.pdf" | while read -r FILE
do
convert "$FILE" "${FILE%.pdf}.png"
done
Run Code Online (Sandbox Code Playgroud)
如果你真的想使用正则表达式,Bash≥3.1支持正则表达式.
for f in *.pdf; do
[[ $f =~ ^(.*)\.pdf$ ]] &&
convert "$f" "${BASH_REMATCH[1]}.png"
done
Run Code Online (Sandbox Code Playgroud)
并且所有系统都应该具有shell实用程序expr
.
for f in *.pdf; do
match=$(expr "$f" : '\(.*\)\.pdf$') &&
convert "$f" "$match.png"
done
Run Code Online (Sandbox Code Playgroud)
但是Bash的参数扩展(如其他答案中所示)对于像这样的简单情况更有效.
归档时间: |
|
查看次数: |
4259 次 |
最近记录: |