使用BASH在文件名中使用“_”分隔符来组织文件

时间:2013-03-19 15:27:33

标签: shell filenames delimiter organization subdirectory

我觉得我想做的事情很简单,但我是shell脚本的新手,所以我很感激你能给我的任何帮助。

问题:我有一个各种文件类型的文件夹(即“.jpg”,“。psd”,“。png”),需要将这些文件组织到子目录中。每个文件的文件名遵循相同的约定:“number_name.extension”。几个文件共享相同的“数字”值,我希望脚本做的是创建一个具有“数字”值的文件夹(如果它已经不存在)并将具有相同“数字”值的所有文件移动到所述文件夹,无论文件类型/扩展名如何。

我知道Bourne可以做到这一点,但是我无法绕过它。我一直在寻找类似的线程,但似乎没有什么能满足我的问题。非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

怎么样:

for f in *; do mkdir -p ${f%%_*}; mv $f ${f%%_*}; done

这将保留完整的文件名,但您可能想要修剪数字:

for f in *; do 
  dir=${f%%_*}
  mkdir -p $dir
  mv $f $dir/${f#*_} 
done