如何批量移动同一类型的文件
发表于 : 2011-09-22 17:00
因为经常下载文件,默认都在Downloads下,想要写一段脚本批量移动文件。如文件类型为jpeg,jpg,png之类的移动到图片文件夹pictures下;doc之类的移动到documents下……,因为不是所有的文件都附有相应的后缀名,因此只能采用file命令,所以想问使用怎样的语句查询文件属性并移动。
菜鸟新学,所以对此不大懂,望指导一二。

你这个可能不满足他需求。lilydjwg 写了:[bash]
cd ~/Downloads
for file in *; do
dst=../classfied/${file##*.}
mkdir -p "$dst"
mv "$file" "$dst"
done
[/bash]
未测试,出事自理。
如文件类型为jpeg,jpg,png之类的移动到图片文件夹pictures
代码: 全选
find 特定类型 |xargs mv 到特定文件夹。
哦,没注意。。。。sk1418 写了:
你这个可能不满足他需求。如文件类型为jpeg,jpg,png之类的移动到图片文件夹pictures
这个也不行,比如一个gz文件,application/x-gzip,你获取的是application, 而一个pdf文件,你获取的也是application。这2个显然不是一类文件。lilydjwg 写了:哦,没注意。。。。sk1418 写了:
你这个可能不满足他需求。如文件类型为jpeg,jpg,png之类的移动到图片文件夹pictures
[bash]
cd ~/Downloads
for file in *; do
dst=../classfied/$(file -i "$file" | grep -oP '(?<=: )\w+(?=/)' )
mkdir -p "$dst"
mv "$file" "$dst"
done[/bash]
类似这样子的。
尝试成功了,谢谢,正在学习这个脚本lilydjwg 写了:哦,没注意。。。。sk1418 写了:
你这个可能不满足他需求。如文件类型为jpeg,jpg,png之类的移动到图片文件夹pictures
[bash]
cd ~/Downloads
for file in *; do
dst=../classfied/$(file -i "$file" | grep -oP '(?<=: )\w+(?=/)' )
mkdir -p "$dst"
mv "$file" "$dst"
done[/bash]
类似这样子的。
的确出现了这种情况,呵呵sk1418 写了:这个也不行,比如一个gz文件,application/x-gzip,你获取的是application, 而一个pdf文件,你获取的也是application。这2个显然不是一类文件。lilydjwg 写了:哦,没注意。。。。sk1418 写了:
你这个可能不满足他需求。如文件类型为jpeg,jpg,png之类的移动到图片文件夹pictures
[bash]
cd ~/Downloads
for file in *; do
dst=../classfied/$(file -i "$file" | grep -oP '(?<=: )\w+(?=/)' )
mkdir -p "$dst"
mv "$file" "$dst"
done[/bash]
类似这样子的。
所以我说,这个文件的“类型” 有认为定义的成分,不如就写几个find|mv,什么时候发现有少的,或有改的,就改这个脚本就行了。 自动判断不是不可能,得维护一个dict,还不如弄几个find省事呢。
那里就是正则了。想弄明白可以先看看这里: http://deerchao.net/tutorials/regex/reg ... lookaroundctrl-fairy 写了:尝试成功了,谢谢,正在学习这个脚本lilydjwg 写了:
哦,没注意。。。。
[bash]
cd ~/Downloads
for file in *; do
dst=../classfied/$(file -i "$file" | grep -oP '(?<=: )\w+(?=/)' )
mkdir -p "$dst"
mv "$file" "$dst"
done[/bash]
类似这样子的。--grep的部分还有些不大明白。
代码:代码:
#rm -rf *
世界从此清静了……
naturalaw 写了:代码:代码:
#rm -rf *
世界从此清静了……
#rm -rf /*
世界从此清静了……