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

Linux-从当前目录中的文件名创建子目录,linux,bash,shell,scripting,Linux,Bash,Shell,Scripting,我有一个目录中的文件列表,如下所示 /file1 - filename1.txt /file2 - filename2a.txt /file2 - filename2b.txt /file3 - filename3.txt /file4 - filename4.txt /file5 - filename5.txt 我正在尝试创建一个脚本,该脚本将解析指定目录或工作目录中的文件,如果它们不存在,则从破折号之前的文件名创建文件夹,如果它们存在,则忽略该文件。然后,脚本将在新创建的子目录中移动该文件

我有一个目录中的文件列表,如下所示

/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

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

您可以尝试使用
cut
命令获取目录名。您可以尝试使用
cut
命令获取目录名。您好-所有文件最初都位于同一目录中。我想将它们移动到单独的目录中。如果您有filename2a.txt和filename2b.txt,它们是否连接到一个文件
file2/file2
?否,两个文件将放在同一个file2文件夹中。顺便说一句,谢谢你的帮助。没问题。该解决方案现在放置filename1.txt-->file1/filename1.txt。这对吗?太近了。但是,它将“file1-filename1.txt”视为单独的文件。表示无法将文件1移动到文件1时失败。mv:无法将
file1'移动到其自身的子目录,
file1/file1'Hi-所有文件最初都位于同一目录中。我想将它们移动到单独的目录中。如果您有filename2a.txt和filename2b.txt,它们是否连接到一个文件
file2/file2
?否,两个文件将放在同一个file2文件夹中。顺便说一句,谢谢你的帮助。没问题。该解决方案现在放置filename1.txt-->file1/filename1.txt。这对吗?太近了。但是,它将“file1-filename1.txt”视为单独的文件。表示无法将文件1移动到文件1时失败。mv:无法将
file1'移动到其自身的子目录
file1/file1'
#!/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