Linux
提取特定文件名並將它們放入其名稱的文件夾中
我是 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}
如果命令成功,則文件將移動到此目錄。