Bash 移动文件脚本帮助
我对Linux相当陌生,我正在学习。目前我正在复习脚本的基础知识,我正在练习我的第一个脚本,我想知道你是否可以帮我练习一下这个脚本Bash 移动文件脚本帮助,bash,Bash,我对Linux相当陌生,我正在学习。目前我正在复习脚本的基础知识,我正在练习我的第一个脚本,我想知道你是否可以帮我练习一下这个脚本 #!/bin/bash find . -type f -name "*.mkv" -o -name "*.mp4" | while read files2move; do f=$files2move mv $f ~/My_stuff done 我有一个包含mkv和mp4的下载文件夹,但每个文件夹都包含在自己的文件夹中
#!/bin/bash
find . -type f -name "*.mkv" -o -name "*.mp4" | while read files2move;
do
f=$files2move
mv $f ~/My_stuff
done
我有一个包含mkv和mp4的下载文件夹,但每个文件夹都包含在自己的文件夹中,我创建了这个文件夹,将找到的所有文件移动到我的东西中,而不是将每个文件单独移动到我的东西中
到目前为止,它还在工作,但我还想添加一种方法,在文件移动后删除文件所在的目录,但我不知道如何执行此操作
有人能给我指出正确的方向或在这件事上提供一些帮助吗
编辑
我做了一些尝试,我想我可能已经找到了一个解决方案@肯特:谢谢,但我的知识太基础了,无法理解你的答案
不管怎样,这就是我最后做的。如果你能告诉我一个更好的方法来改善它,请让我知道
#!/bin/bash
root_dir=$PWD
find . -type f -name "*.mkv" -o -name "*.mp4" | while read files2move;
do
f=$files2move
directory_name=$(dirname "${f}")
mv "$f" ~/My_stuff
cd $root_dir
rm -r "$directory_name"
done
这个班轮在这里工作:
find . -type f -a -regex ".*\.\(mp4\|mkv\)$"|awk -v q='"' -v target="$target"
'{a=$0;sub(/\/[^/]*$/,"",a);c="mv %s %s && rm -r %s\n"; printf c, q$0q, target, q a q}'|sh
删除结尾的| sh以查看生成的命令,如果一切正常,则添加| sh以执行它们。只需在完成rm-rf之前添加此命令。*。txt*.mp4至少在移动到当前目录后应删除此文件夹我要删除该文件夹。。。假设我在~/Downloads/ABC/ABC.mkv上有一个文件。。。我想将ABC.mkv移到~/My_stuff,然后删除ABC文件夹