Сценарий оболочки, чтобы Получить имя файла и размер в файле CSV и добавить заголовок на том файле

Используйте этот формат:

printf ""     | ifne sh -c  "cat - ; echo 'stream not empty' "

Вывод отсутствует, и:

printf "bb\n" | ifne sh -c  "cat - ; echo 'stream not empty' "

Вывод:

bb
stream not empty
1
04.06.2014, 01:44
2 ответа

Держите.

#!/bin/sh

# Go to where the files are located
cd /somedirectory/archive/test

# Save IFS variable (if needed) and set it to newline.
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")

# List the files and for each one save the size, time and name. Then, save results.
echo '"File Name","size","date"' > output.csv
for line in `ls -lrt *.txt.gz`; do
        size=$(echo $line |awk -F ' ' '{print $5}');
        date=$(echo $line |awk -F ' ' '{print $6" "$7}');
        file=$(echo $line |awk -F ' ' '{print $9}');
        echo '"'$size'","'$date'","'$file'"' >> output.csv
done

# Return IFS to original status.
IFS=$SAVEIFS

code=$?
exit $code

Результат:

$ cat output.csv 
"File Name","size","date"
"0","Jun 3","XXXXX_20140530_0401_28.txt.gz"
"0","Jun 3","XXXXX_20140530_0401_29.txt.gz"
"0","Jun 3","XXXXX_20140531_0401_01.txt.gz"
0
27.01.2020, 23:52

простой способ сделать это - вставить скрипт:

#!/bin/bash    
echo "File Name,Size,date" > /tmp/output_file
ls -l --time-style=+%m.%d.%Y /path/to/file |grep -v "^total|^d"|awk '{print $NF","$4","$5 }'  >> /tmp/output_file

Это удалит сумму в начале ls, а также исключит каталоги.

1
27.01.2020, 23:52

Теги

Похожие вопросы