如何编写将用作 cron 作业的 mv 命令
How to write mv command that will work as cron job
我是 运行 Centos 7。我需要一个 cron 作业来将所有内容从 /media/tmp 移动到 /media/tv 除了 .grab 和 Transcode 文件夹。昨天我认为以下方法有效,但今天它也移动了 Transcode 文件夹。
mv -n /media/tmp/*!(Transcode)!(.grab) /media/tv/
我发现上面的内容不能作为 cron 作业作为 '(' 原因和错误。我知道我需要逃避那些,但现在我得到了
mv: cannot stat ‘/media/tmp/!(Transcode)!(.grab)’: No such file or directory
我目前对 bash 脚本的尝试是
#!/bin/bash
mv -n '/media/tmp'/*!\(Transcode\)!\(.grab\) '/media/tv/'
我的理解是 * 是问题所在,但在文件路径上使用 ' 或 " 似乎并不能像那样修复它 post 我发现说可以。
关于如何让它正常工作的任何想法?
我只是做一些简单的事情,比如(未经测试):
mkdir -p /media/tv || exit 1
for i in /media/tmp/*; do
case $(basename "$i") in
Transcode|.grab ) ;;
* ) mv -n -- "$i" /media/tv ;;
esac
done
您正在尝试使用 extglob,它可能没有为 cron 启用。我会完全避免该选项,使用负 !
正则表达式匹配遍历 glob。
for file in /media/tmp/*; do
[[ ! "$file" =~ Transcode|\.grab$ ]] && mv -n "$file" /media/tv/
done
我是 运行 Centos 7。我需要一个 cron 作业来将所有内容从 /media/tmp 移动到 /media/tv 除了 .grab 和 Transcode 文件夹。昨天我认为以下方法有效,但今天它也移动了 Transcode 文件夹。
mv -n /media/tmp/*!(Transcode)!(.grab) /media/tv/
我发现上面的内容不能作为 cron 作业作为 '(' 原因和错误。我知道我需要逃避那些,但现在我得到了
mv: cannot stat ‘/media/tmp/!(Transcode)!(.grab)’: No such file or directory
我目前对 bash 脚本的尝试是
#!/bin/bash
mv -n '/media/tmp'/*!\(Transcode\)!\(.grab\) '/media/tv/'
我的理解是 * 是问题所在,但在文件路径上使用 ' 或 " 似乎并不能像那样修复它 post 我发现说可以。
关于如何让它正常工作的任何想法?
我只是做一些简单的事情,比如(未经测试):
mkdir -p /media/tv || exit 1
for i in /media/tmp/*; do
case $(basename "$i") in
Transcode|.grab ) ;;
* ) mv -n -- "$i" /media/tv ;;
esac
done
您正在尝试使用 extglob,它可能没有为 cron 启用。我会完全避免该选项,使用负 !
正则表达式匹配遍历 glob。
for file in /media/tmp/*; do
[[ ! "$file" =~ Transcode|\.grab$ ]] && mv -n "$file" /media/tv/
done