Bash 移动文件脚本帮助

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的下载文件夹,但每个文件夹都包含在自己的文件夹中

我对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
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文件夹