1

以下のようなディレクトリにファイルのリストがあります。

/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

どんな助けでも大歓迎です。ありがとうございました。

4

1 に答える 1

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
于 2013-04-04T11:15:03.017 に答える