Linux - 从当前目录中的文件名创建子目录

时间:2013-04-04 11:02:10

标签: linux bash shell scripting

我在下面的目录中有一个文件列表。

/file1 - filename1.txt
/file2 - filename2a.txt
/file2 - filename2b.txt
/file3 - filename3.txt
/file4 - filename4.txt
/file5 - filename5.txt

我正在尝试创建一个脚本来解析指定或工作目录中的文件,从破折号之前的文件名创建文件夹,如果它们不存在则忽略该文件。然后脚本将在新创建的子目录中移动该文件名。

例如,列表最终将如下所示。

/file1/file1 - filename1.txt
/file2/file2 - filename2a.txt
/file2/file2 - filename2b.txt
/file3/file3 - filename3.txt
/file4/file4 - filename4.txt
/file5/file5 - filename5.txt

任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

#!/bin/bash
for f in filename*
do
   d=$( echo $f | sed 's/filename\([0-9]*\).*/file\1/')
   [ -d $d ] || mkdir $d
   mv $f $d
   echo "$f moved to $d"
done