Jak*_*ers -2 linux bash shell find
我试图在Linux shell脚本中运行以下find命令.当我在终端中运行该命令时,它成功找到具有.mp4
指定文件夹扩展名的所有文件,并将它们复制到临时文件夹.
find /datadrive/reports/ -name \*.mp4 -exec cp {}
/datadrive/reports/video_tmp/ \;
Run Code Online (Sandbox Code Playgroud)
但是,当我在我的运行中 file_mover.sh
码:
SHELL=/bin/bash
PATH=~/find /datadrive/reports/ -name '\*.mp4' -exec cp {}
/datadrive/reports/video_tmp/ \;
done
MAILTO=root
Run Code Online (Sandbox Code Playgroud)
输出:
./file_mover.sh: line 2: /datadrive/reports/: Is a directory.
Run Code Online (Sandbox Code Playgroud)
我想我在脚本的某个地方缺少语法,任何帮助都会受到赞赏.
以下是一个完全有效的脚本:
#!/bin/sh
find /datadrive/reports/ -name '*.mp4' -exec cp -t /datadrive/reports/video_tmp/ '{}' +
Run Code Online (Sandbox Code Playgroud)
请注意更改:
PATH
.这是一个具有特殊含义的变量(它决定了程序的位置),因此重新分配它通常会使事情变得混乱.-name \*.mp4
是合法的匹配所有以.mp4
.结尾的文件.-name '*.mp4'
为同一目的是合法的.你不能将两者结合起来,让它仍然意味着你想要的.cp -t dest source1 source2 ...
,我们允许find
仅运行cp
将目标文件名放在命令行上所需的最短次数.分配SHELL
和分配也没有意义MAILTO
; 它们在crontab(以及其他一些特定/狭窄的环境)中有意义,但不适用于通用脚本.
归档时间: |
|
查看次数: |
67 次 |
最近记录: |