我被困在这个项目上,我需要在目录中创建一个文件列表的cvs文件。
现在我正在使用ls -la> test.csv哪个有效但我需要分开文件权限,日期,文件名。我还需要将文件分为三部分
继承原始格式
-rw-rw-r-- 1 heta-Sxl heta-SXL 677 Apr 5 13:36 move_20160403234624_SXL_Q97GN_238.tgz
-rw-rw-r-- 1 heta-Sxl heta-SXL 678 Apr 5 13:37 move_20160403234624_SXL_Q97GN_239.tgz
这就是我要做的事情
Permissions file size Date time filename1 filename 2 filename 3
-rw-rw-r-- 677 APR 5 13:37 move_20160403234624_SXL Q97GN 239
答案 0 :(得分:1)
awk
救援!
添加标题...
$ awk '{split($9,f,"_");sub(/\..*/,"",f[5]);
print $1, $5,$6,$7,$8,f[1]"_"f[2]"_"f[3],f[4],f[5]}' test.csv
-rw-rw-r-- 677 Apr 5 13:36 move_20160403234624_SXL Q97GN 238
-rw-rw-r-- 678 Apr 5 13:37 move_20160403234624_SXL Q97GN 239
您可以直接在ls
输出中输入管道,而无需中间文件
$ ls -la | awk ...
答案 1 :(得分:0)
您可以使用ls
来执行作业的主要部分,然后使用awk(或sed)来拆分文件名,而不是使用find
:
find . -maxdepth 1 -type f -printf "%M\t%s\t%Tb %Td\t%TH:%TM\t%f\n" | awk -F'[_.]' -v OFS='_' '{print $1,$2,$3"\t"$4"\t"$5}'