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

代码: 全选
linux和windows对我等菜鸟,都是浮云!
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: 如何批量移动同一类型的文件
[bash]
cd ~/Downloads
for file in *; do
dst=../classfied/${file##*.}
mkdir -p "$dst"
mv "$file" "$dst"
done
[/bash]
未测试,出事自理。
cd ~/Downloads
for file in *; do
dst=../classfied/${file##*.}
mkdir -p "$dst"
mv "$file" "$dst"
done
[/bash]
未测试,出事自理。
-
- 帖子: 229
- 注册时间: 2007-07-01 17:36
- 系统: (En):System
- 来自: (En):address
- 联系:
Re: 如何批量移动同一类型的文件
你这个可能不满足他需求。lilydjwg 写了:[bash]
cd ~/Downloads
for file in *; do
dst=../classfied/${file##*.}
mkdir -p "$dst"
mv "$file" "$dst"
done
[/bash]
未测试,出事自理。
如文件类型为jpeg,jpg,png之类的移动到图片文件夹pictures
---
regards,
Kent
regards,
Kent
-
- 帖子: 229
- 注册时间: 2007-07-01 17:36
- 系统: (En):System
- 来自: (En):address
- 联系:
Re: 如何批量移动同一类型的文件
lz我觉得,你不如写个脚本,里面就是按你要求罗列的几个find
就得了。
代码: 全选
find 特定类型 |xargs mv 到特定文件夹。
---
regards,
Kent
regards,
Kent
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: 如何批量移动同一类型的文件
哦,没注意。。。。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]
类似这样子的。
-
- 帖子: 229
- 注册时间: 2007-07-01 17:36
- 系统: (En):System
- 来自: (En):address
- 联系:
Re: 如何批量移动同一类型的文件
这个也不行,比如一个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省事呢。
---
regards,
Kent
regards,
Kent
- ctrl-fairy
- 帖子: 116
- 注册时间: 2011-04-28 18:05
Re: 如何批量移动同一类型的文件
尝试成功了,谢谢,正在学习这个脚本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]
类似这样子的。

代码: 全选
linux和windows对我等菜鸟,都是浮云!
- ctrl-fairy
- 帖子: 116
- 注册时间: 2011-04-28 18:05
Re: 如何批量移动同一类型的文件
的确出现了这种情况,呵呵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省事呢。

代码: 全选
linux和windows对我等菜鸟,都是浮云!
- naturalaw
- 帖子: 1360
- 注册时间: 2011-09-06 22:04
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: 如何批量移动同一类型的文件
那里就是正则了。想弄明白可以先看看这里: 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的部分还有些不大明白。
- naturalaw
- 帖子: 1360
- 注册时间: 2011-09-06 22:04
- ctrl-fairy
- 帖子: 116
- 注册时间: 2011-04-28 18:05
Re: 如何批量移动同一类型的文件
naturalaw 写了:代码:代码:
#rm -rf *
世界从此清静了……
#rm -rf /*
世界从此清静了……


代码: 全选
linux和windows对我等菜鸟,都是浮云!