2016-04-05 3 views
0

Я застрял в этом проекте, мне нужно создать файл cvs из списка файлов в каталоге.Создание файла CSV, содержащего имена файлов в каталоге

прямо сейчас я использую ls -la> test.csv, который работает, но мне нужно разделить разрешения файлов, дату, имя файла. я также нужно разрезать файл на три части

Heres сырой формат

-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

команда cut может помочь вам: http://www.computerhope.com/unix/ucut.htm – Pierre

+0

Вы хотите, чтобы запятые были разделителями в вашем выходном файле? –

+0

да, запятые были бы замечательными, мне нужно ввести это в базу данных mysql – Rich

ответ

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 ... 
+0

как мне запустить это? – Rich

+0

я запускаю это вот так ls -la | awk? – Rich

+0

Да, тот же скрипт awk несколько строк выше без имени файла в конце. – karakfa

0

Вместо использования ls, вы можете использовать find сделать основной часть задания, а затем awk (или sed) для разделения имени файла:

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}' 
Смежные вопросы