我的目标是为 mogrify 编写一个脚本。mogrify 命令将调整目录中图像的大小,并将调整后的图像放入同一目录级别的目录中,该目录的名称与工作目录相同,但带有后缀 (_a)。
新目录稍后将被移至另一个集合。类似这样,
#!/bin/bash
mkdir ../n_a
for file in *{.JPG|.jpg}; do mogrify -path ../n_a -resize 1200x1200 -quality 96;done
我猜测 ../ 在子目录中工作时表示父目录,但我在这里需要帮助。
编辑:“n”需要替换为工作目录名称的语法。抱歉,第三行脚本也有拼写错误,应该是 n 而不是 x
编辑2:这个脚本完全满足我的需要,而且没有任何噪音。
#!/bin/bash
DEST="../${PWD##*/}_a"
mkdir -p $DEST
mogrify -path $DEST -resize 1200x1200 -quality 96 *.jpg *.JPG
感谢 vgoff 提供正确的 PWD 语法和 cesarerivahttp://www.cesareriva.com/archives/722向我展示 DEST 函数。
其他内容:
${PWD##*/}_a
不关心目录名称中的空格,脚本失败。在与图像相同的目录中创建一个空目录。
现在发现了,它也需要在 $DEST 上使用引号,大概是为了帮助 mkdir 创建名称中带有空格的目录,并使用 mogrify 将文件写入正确的位置,就像这样
#!/bin/bash
DEST="../${PWD##*/}_a"
mkdir -p "$DEST"
mogrify -path "$DEST" -resize 1200x1200 -quality 96 *.jpg *.JPG
编辑3:甚至不需要脚本,即
mkdir ../${PWD##*/}_a && mogrify -path ../${PWD##*/}_a -resize '1200x1200>' -quality 95 *{.jpg|.JPG}
答案1
我猜测 ../ 在子目录中工作时表示父目录,但我在这里需要帮助。
你猜对了。
“n”需要替换为工作目录名称的语法。
啊哈。在这种情况下,pwd
命令就是你的好朋友。用它填充变量或使用$PWD
变量
答案2
是的。它是父目录。
需要注意的是,这并非特定于 bash。它甚至不是 shell。它是文件系统工作方式的一部分。
文件系统在每个目录中都有一个条目,..
即父目录。每个目录也都有一个条目.
表示当前目录。