我想在NAS上的某些文件移动到正确的文件夹后为其编制索引。我的命令将类似于:
find *.$ext -exec mv "{}" $path \; -exec synoindex -a $(echo $path)$(basename "{}") \;
第一部分正在工作。所有扩展名为$ ext的文件都将移至目标$ path。但是第二部分应该在这些文件的新$ path文件夹中建立索引,因此无法正常工作。
这很奇怪,因为:
感谢任何想法。
问候,
您的命令替换$(echo $path)
和$(basename "{}")
在执行find
之前由外壳程序执行。而且您不需要echo
$path
变量。您可以改为执行一个小的Shell脚本:
find . -type f -name "*.$ext" -exec sh -c '
targetpath=$1; shift # get the value of $path
for file; do
mv -i "$file" "$targetpath"
synoindex -a "$targetpath/${file##*/}"
done
' sh "$path" {} +
这将从当前目录find
中的.
开始,以常规文件(-type f
)结尾,以文件扩展名$ext
(-name "*.$ext"
)并执行一个小的Shell脚本,将$path
变量作为第一个参数传递给脚本。以下参数是find
找到的文件路径。
参数扩展${file##*/}
从文件中删除最长的前缀*/
,结果为基名。如果$path
变量已经包含斜杠/
,请在/
之后省略$targetpath
。