ファイル名に基づいてサブディレクトリを作成し、一致するファイルをそのディレクトリに移動するスクリプトを作成します。

ファイル名に基づいてサブディレクトリを作成し、一致するファイルをそのディレクトリに移動するスクリプトを作成します。

フォルダには多数のファイルがあります。各ファイルペアの名前は同じですが、拡張子は異なります(.objと.mtl)。同じ名前の各ファイルペアのフォルダを作成し、各ファイルペアを一致するフォルダに移動したいと思います。ファイル名には常に文字が含まれ、一部には下線と数字も含まれます。

私がする必要があるのは:
A)ファイル名を読む
B)前のファイルと同じ名前のサブディレクトリを作成する
C)ファイル名と一致するファイルのペアを一致するサブディレクトリに移動する
D)

例:
ファイル:Big_Column1.obj、Big_Column1.mtlは
サブディレクトリ:Big_Column1に移動します。

ベストアンサー1

テストを経てうまく機能しました

名前は同じですが、拡張子が他のすべてのファイル名とは別のファイル名を見つけて、ディレクトリを構成および作成し、ファイルを同じ名前のディレクトリに移動します。

次の例では、Big_Column1、Big_Column2 ディレクトリが作成されます。

for i in `ls -ltrh directorypath| awk '{print $NF}'| awk -F "." '{print $1}'| sort| uniq`; do mkdir $i; yes|cp  $i* $i; done

Before

praveen_linux_example pravee]# ll
total 0
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column1.mtl
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column1.obj
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column2.mtl
-rw-r--r--. 1 root root 0 Nov 30 22:38 Big_Column2.obj


command:n_linux_example pravee]# for i in `ls -ltrh | awk '{print $NF}'| awk -F "." '{print $1}'| sort| uniq`; do mkdir $i; yes|cp  $i* $i; done

後ろに

After executing below is the output of ls -ltr

drwxr-xr-x. 2 root root 4096 Nov 30 22:39 Big_Column1
-rw-r--r--. 1 root root    0 Nov 30 22:38 Big_Column1.mtl
-rw-r--r--. 1 root root    0 Nov 30 22:38 Big_Column1.obj
drwxr-xr-x. 2 root root 4096 Nov 30 22:39 Big_Column2
-rw-r--r--. 1 root root    0 Nov 30 22:38 Big_Column2.mtl
-rw-r--r--. 1 root root    0 Nov 30 22:38 Big_Column2.obj

おすすめ記事