(mogrify)ln -s创建文件的副本

时间:2014-01-13 13:20:51

标签: bash batch-file find ln mogrify

运行以下脚本:

for i in $(find dir -name "*.jpg"); do
  ln -s $i
done

令人难以置信地为90%的文件制作了符号链接,并制作了剩余10%的副本。怎么可能?

修改:之后发生的事情是相关的:

这些是我通过mogrify旋转的图像链接,例如

mogrify -rotate 90 link_to_image

似乎mrurify在一个链接上默默地制作了一个图像的副本,有争议的选择,但就是这样。

3 个答案:

答案 0 :(得分:3)

如果您想了解有关处理名称中带空格的文件的更多信息,请跳过第一段

目前尚不清楚,问题的根源是什么,我们的假设是问题出现在文件名中的空格中:具有这些问题的文件未得到正确处理。

真正的问题是mogrify应用于创建的链接,处理它们并使用真实文件进行更改。

关于文件名中的空格。

处理名称中包含空格的文件

这是因为文件名中有空格。 你可以这样写:

find dir -name \*.jpg | while IFS= read i
do
  ln -s "$i"
done

(这里使用IFS=来避免剥离前导空格,这要归功于@Alfe的提示)。

或使用xargs

如果名称中包含“\ n”,则最好使用print0

find dir -name \*.jpg -print0 | xargs -0 -N1 ln -s

当然,您也可以使用其他方法,例如:

find dir -name '*.jpg' -exec ln -s "{}" \;
ln -s "$(find dir -name '*.jpg')" .

答案 1 :(得分:1)

(Imagemagick)mogrify应用于链接删除链接并制作图像的副本

答案 2 :(得分:0)

尝试使用单引号:

find dir -name '*.jpg' -exec ln -s "{}" \;