多个查找执行选项:synology index 命令行

Multiple find exec options: synology index command line

我想在将我的 NAS 上的一些文件移动到正确的文件夹后对其进行索引。 我的命令类似于:

find *.$ext -exec mv "{}" $path \; -exec synoindex -a $(echo $path)$(basename "{}") \;

第一部分正在运行。所有带有 $ext 扩展名的文件都被移动到目标 $path。 但是第二部分,应该在新的 $path 文件夹中索引这些文件,却不起作用。

这很奇怪,因为:

感谢任何想法。

此致,

您的命令替换 $(echo $path)$(basename "{}") 在执行 find 之前由您的 shell 执行。 而且您不需要 echo $path 变量。您可以改为执行一个小的 shell 脚本:

find . -type f -name "*.$ext" -exec sh -c '
  targetpath=; 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.

之后省略 /