移动文件脚本帮助

时间:2014-05-24 21:05:00

标签: 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的下载文件夹,但是每个文件夹都包含在它自己的文件夹中,而不是将每个文件单独移动到My_stuff我创建了这个文件以将它找到的所有文件移动到My_stuff ..

它到目前为止工作但我还想添加一种方法来删除文件移动后文件所在的目录,但我不知道如何做到这一点。

有人能指出我正确的方向或就此事提供一些帮助吗?

............... EDIT ..................

我做了一些试验错误,我想我可能已经找到了解决方案。 @Kent感谢,但我的知识太基础了,无法跟着你回答。

无论如何这就是我最终做的事情。如果你能告诉我一个更好的改进方法,请告诉我

#!/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

1 个答案:

答案 0 :(得分:0)

这一个班轮在这里工作:

 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以执行它们。