我正在尝试编写一个 sh 脚本,该脚本将在我的其中一个下载完成时运行。
它应该在 ~/Downloads 上查找特定的文件名,并根据文件名将其移动到不同的目录。
IE。我已经下载了《欢乐合唱团》的最后一集,文件名是:
glee_some_trash_files_always_have.mkv
应该将其移至
~/TVshows/Glee/
这就是我能够做的:
#!/bin/bash
if filename in ~/Downoads; then
result=
if filename = *glee*; then
result= mv $filename ~/TVshows/Glee/
else
if filename = *pokemon*; then
result= mv $filename ~/TVshows/pokemon/
endif
done
我的做法正确吗?请注意,我对 sh 很陌生。
提前致谢。
###############################################################################
编辑:这是我的脚本,我希望其他人能发现它有用:
#!/bin/bash
cd "$HOME/Downloads"
# for filename in *; do
find . -type f | while IFS= read filename; do # Look for files in all ~/Download sub-dirs
case "${filename,,*}" in # this syntax emits the value in lowercase: ${var,,*} (bash version 4)
*.part) : ;; # Excludes *.part files from being moved
move.sh) : ;;
# *test*) mv "$filename" "$HOME/TVshows/Glee/" ;; # Using move there is no need to {&& rm "$filename"}
*test*) scp "$filename" "[email protected] /cdn-cgi/l/email-protection:/users/imac/Desktop/" && rm "$filename" ;;
*american*dad*) scp "$filename" "[email protected] /cdn-cgi/l/email-protection:/users/imac/Movies/Series/American\ Dad/" && rm "$filename" ;;
*) echo "Don't know where to put $filename" ;;
esac
done
这是外壳的地方case
声明派上用场:
#!/bin/bash
cd "$HOME/Downloads"
for filename in *; do
# this syntax emits the value in lowercase: ${var,,*} (bash version 4)
case "${filename,,*}" in
glee*) mv "$filename" "$HOME/TVshows/Glee/" ;;
pokemon*) mv "$filename" "$HOME/TVshows/pokemon/" ;;
*) echo "don't know where to put $filename";;
esac
done
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)