+ -
当前位置:首页 → 问答吧 → ImageMagick 实现的手撕纸张效果

ImageMagick 实现的手撕纸张效果

时间:2011-09-22

来源:互联网

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

作者: ctrl-fairy   发布时间: 2011-09-22

代码: [ 下载 ] [ 隐藏 ]
代码: [ 下载 ] [ 显示 ]
使用 bash 语法高亮
cd ~/Downloads
for file in *; do
  dst=../classfied/${file##*.}
  mkdir -p "$dst"
  mv "$file" "$dst"
done
 
格式化 0.007 秒, 使用 GeSHi 1.0.8.4

未测试,出事自理。

作者: lilydjwg   发布时间: 2011-09-22

lilydjwg 写道:
代码: [ 下载 ] [ 隐藏 ]
代码: [ 下载 ] [ 显示 ]
使用 bash 语法高亮
cd ~/Downloads
for file in *; do
  dst=../classfied/${file##*.}
  mkdir -p "$dst"
  mv "$file" "$dst"
done
 
格式化 0.006 秒, 使用 GeSHi 1.0.8.4

未测试,出事自理。


你这个可能不满足他需求。
引用:
如文件类型为jpeg,jpg,png之类的移动到图片文件夹pictures

作者: sk1418   发布时间: 2011-09-22

lz我觉得,你不如写个脚本,里面就是按你要求罗列的几个find
代码:
find 特定类型 |xargs mv 到特定文件夹。


就得了。

作者: sk1418   发布时间: 2011-09-22

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
格式化 0.007 秒, 使用 GeSHi 1.0.8.4


类似这样子的。

作者: lilydjwg   发布时间: 2011-09-22

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
格式化 0.007 秒, 使用 GeSHi 1.0.8.4


类似这样子的。


这个也不行,比如一个gz文件,application/x-gzip,你获取的是application, 而一个pdf文件,你获取的也是application。这2个显然不是一类文件。

所以我说,这个文件的“类型” 有认为定义的成分,不如就写几个find|mv,什么时候发现有少的,或有改的,就改这个脚本就行了。 自动判断不是不可能,得维护一个dict,还不如弄几个find省事呢。

作者: sk1418   发布时间: 2011-09-22

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
格式化 0.007 秒, 使用 GeSHi 1.0.8.4


类似这样子的。

尝试成功了,谢谢,正在学习这个脚本 --grep的部分还有些不大明白。

作者: ctrl-fairy   发布时间: 2011-09-22

sk1418 写道:
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
格式化 0.007 秒, 使用 GeSHi 1.0.8.4


类似这样子的。


这个也不行,比如一个gz文件,application/x-gzip,你获取的是application, 而一个pdf文件,你获取的也是application。这2个显然不是一类文件。

所以我说,这个文件的“类型” 有认为定义的成分,不如就写几个find|mv,什么时候发现有少的,或有改的,就改这个脚本就行了。 自动判断不是不可能,得维护一个dict,还不如弄几个find省事呢。

的确出现了这种情况,呵呵 。谢谢了,的确是好的,不过有时有些太繁琐,我还是尝试结合看看。

作者: ctrl-fairy   发布时间: 2011-09-22

写个脚本嘛.
代码:
if ;then
elif ;then
...
fi
or
代码:
case.

作者: naturalaw   发布时间: 2011-09-22

ctrl-fairy 写道:
lilydjwg 写道:

哦,没注意。。。。
代码: [ 下载 ] [ 隐藏 ]
代码: [ 下载 ] [ 显示 ]
使用 bash 语法高亮
cd ~/Downloads
for file in *; do
  dst=../classfied/$(file -i "$file" | grep -oP '(?<=: )\w+(?=/)' )
  mkdir -p "$dst"
  mv "$file" "$dst"
done
格式化 0.007 秒, 使用 GeSHi 1.0.8.4


类似这样子的。

尝试成功了,谢谢,正在学习这个脚本 --grep的部分还有些不大明白。


那里就是正则了。想弄明白可以先看看这里: http://deerchao.net/tutorials/regex/reg ... lookaround

作者: lilydjwg   发布时间: 2011-09-22

引用:
代码:
#rm -rf *

世界从此清静了……

代码:
#rm -rf /*

世界从此清静了……

作者: naturalaw   发布时间: 2011-09-22