bash – SH脚本根据文件名将文件从一个目录移动到另一个目录
发布时间:2020-12-15 22:17:27 所属栏目:安全 来源:网络整理
导读:我正在尝试编写一个sh脚本,该脚本将在我的一个下载完成后运行. 它应该在?/ Downloads上查找特定的文件名,并根据文件名将其移动到不同的目录. 即我已经下载了Glee的最后一集,文件名为: glee_some_trash_files_always_have.mkv 它应该移动到 ~/TVshows/Glee/
我正在尝试编写一个sh脚本,该脚本将在我的一个下载完成后运行.
它应该在?/ Downloads上查找特定的文件名,并根据文件名将其移动到不同的目录. 即我已经下载了Glee的最后一集,文件名为: 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 我的方法是否正确?请注意我是新来的. 提前致谢. ############################################################################### 编辑:这是我的脚本,我希望其他人能发现它有用: #!/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" "imac@imac.local:/users/imac/Desktop/" && rm "$filename" ;; *american*dad*) scp "$filename" "imac@imac.local:/users/imac/Movies/Series/American Dad/" && rm "$filename" ;; *) echo "Don't know where to put $filename" ;; esac done 解决方法
这是shell的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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容