如何使用文件名创建文件夹,然后将文件移动到文件夹中?

jra*_*ara 5 python unix bash perl batch-file

我在使用这种命名约定命名的文件夹中有数百个文本文件:

Bandname1 - song1.txt
Bandname1 - song2.txt
Bandname2 - song1.txt
Bandname2 - song2.txt
Bandname2 - song3.txt
Bandname3 - song1.txt
..etc.
Run Code Online (Sandbox Code Playgroud)

我想为不同的乐队创建文件夹,并根据文本文件移动到这些文件夹中.我怎么能用bash,perl或python脚本实现这个目的?

bjl*_*aub 1

gregseth的答案会起作用,只需替换trimxargs. 您还可以if仅使用 来消除测试mkdir -p,例如:

for f in *.txt; do
    band=$(echo "$f" | cut -d'-' -f1 | xargs)
    mkdir -p "$band"
    mv "$f" "$band"
done
Run Code Online (Sandbox Code Playgroud)

严格来说,trim或甚xargs至不应该是必要的,但xargs至少会删除任何额外的格式,所以它不会有什么坏处。