并提前感谢您的任何建议。
我正在编写一个脚本,可以自动对我的下载进行排序。该脚本非常简单,手动运行它可以达到预期的效果。我遇到的问题是用于触发脚本的 fswatch 命令 - 我无法将 echo 的输出正确地传输到 xargs 中。命令如下:
fswatch --event Created Downloads/ | (while read x; do echo $x | xargs -0 bash ./dlsort.sh; done)
脚本如下:
if (echo "$1" | grep -q '\.jpg$'); then
mv "$1" Desktop/images/ &
else
mv "$1" Downloads/other/ &
fi
我已经确定了问题所在,但我不知道如何纠正它。文件名末尾添加了一个换行符,这导致 mv 命令失败,并在脚本中显示“没有这样的文件或目录”错误。我已经尝试了 echo 和 fswatch 命令中的多种变体,但都没有奏效。
再次感谢所有能提供帮助的人
答案1
针对这个特定问题找到了一个很好的答案:
使用 fswatch 选项 --format="%p%0"。这可确保传递给 xargs 的路径名末尾有空字符,这正是启用 -0 选项后 xargs 所寻找的。