在上面的目录中创建新目录的 bash 语法是什么?

在上面的目录中创建新目录的 bash 语法是什么?

我的目标是为 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。它是文件系统工作方式的一部分。

文件系统在每个目录中都有一个条目,..即父目录。每个目录也都有一个条目.表示当前目录。

相关内容