Linux

提取特定文件名並將它們放入其名稱的文件夾中

  • August 14, 2019

我是 Bash 的新手,Ubuntu 16.04。

我有大量文件,看起來像:

aaaa1111
aaaa1112
aaaa1113
aaaa1114 ...

aaab1111
aaab1112
aaab1113
aaab1114 ...

aaac1111 
aaac1112 ... (and so on ...)

無論如何,模式是 4 個字元 + 和數字。我要做的就是根據4個字元製作目錄,並將相應的文件放入目錄中。

例如,

aaaa1111
aaaa1112
aaaa1113
aaaa1114 ...

將被放入aaaa的目錄中。

aaab1111
aaab1112
aaab1113
aaab1114 ...

將被放入aaab的目錄中。

我嘗試了 ‘sed’、‘mv’ 和其他的,但效果不佳。

for file in [a-z][a-z][a-z][a-z][0-9][0-9][0-9][0-9]; do
   mkdir -p "${file:0:4}" && mv "$file" "${file:0:4}"
done

for-loop 使用四個字元和四個數字迭代目前目錄中的文件名,並在每個步驟中為變數分配一個文件名file

mkdir創建目標目錄。如果目錄已存在並保留目前文件名的前四個字元,則使用標誌-p可防止出現錯誤消息。${file:0:4}如果命令成功,則文件將移動到此目錄。

引用自:https://unix.stackexchange.com/questions/535455