【发布时间】:2018-06-13 15:02:03
【问题描述】:
我正在尝试在 Linux shell 脚本中运行以下 find 命令。当我在终端运行命令时,它成功地从指定文件夹中找到所有扩展名为.mp4的文件,并将它们复制到一个临时文件夹。
find /datadrive/reports/ -name \*.mp4 -exec cp {}
/datadrive/reports/video_tmp/ \;
但是,当我在 file_mover.sh 中运行它时
代码:
SHELL=/bin/bash
PATH=~/find /datadrive/reports/ -name '\*.mp4' -exec cp {}
/datadrive/reports/video_tmp/ \;
done
MAILTO=root
输出:
./file_mover.sh: line 2: /datadrive/reports/: Is a directory.
我认为我在脚本中的某处缺少语法,我们将不胜感激。
【问题讨论】:
-
'\*.mp4'与\*.mp4不同 -
而
PATH分配正在破坏事物。而done没有语法意义。 -
find的调用不会返回任何有用的信息,因此无需尝试将其分配给变量。 -
顺便说一句,如果这是一个 GNU 平台(可能带有 Linux 标签),您可以使用
cp -t将多个文件名传递给一个cp命令,而不是需要每个文件运行一次cp。 -
如果所有文件都在该文件夹中,并且不在子文件夹中,则根本不需要查找:
cp -t /datadrive/reports/video_tmp /datadrive/reports/*.mp4