Unix

如何根據文件名將文件與 unix cat 命令合併,然後重命名?

  • August 8, 2012

我在一個目錄中有一堆 CSV 文件,例如:

modfinalak_1.csv modfinalal_1.csv modfinalal_2.csv modfinalal_3.csv modfinalar_1.csv modfinalar_2.csv

所以它是每個美國州(AK、AL、AR 等)的一個或多個文件。如何使用 cat 組合每個州的所有文件,然後將文件重命名為州名?

在上面的範例中,我希望將 modfinal_1.csv、modfinalal_2.csv 和 modfinalal_3.csv 合併並重命名為 al.csv。您如何根據“_”字元之前的文本讓 cat 執行此操作?

像這樣的事情會在 bash 中完成(列出列表中的所有狀態縮寫in和之間;):

for s in ak al ar ; do cat *${s}_*.csv > $s.csv ; done

如果您在文件中有州縮寫states.txt,則該行可能如下所示:

for s in `cat states.txt` ; do cat *${s}_*.csv > $s.csv ; done

引用自:https://serverfault.com/questions/415367