Вывод информации в отдельный csv

vasek
MyDestiny, учи матчасть...... тебе дали черновой вариант скрипта, вот его и запускай ....... рекомендую доработать скрипт для себя - можно в него включить и подготовку файла-listing + обязательно обработку ошибок и др. ...... а не хочешь учить матчасть, не берись.
А то получается как в сказке - тетенька дай водички попить, а то так кушать хочется, что переночевать негде .....

vasek Спасибо за критику, согласен. Но как всегда бывает "надо вчера было" :( поэтом и обратился к вам, как гуру этого дела. матчасть в процессе! Буду признателен в примере по моим параметрам ж)
MyDestiny
vasek Спасибо за критику, согласен. Но как всегда бывает "надо вчера было" :( поэтом и обратился к вам, как гуру этого дела. матчасть в процессе! Буду признателен в примере по моим параметрам ж)
Вам к фрилансерам надо было обращаться, раз вчера было нужно, за такие вещи людям деньги платят.
MyDestiny, примерно так .... все автоматом ....
1. nano ~/csv.sh …..... и вставляешь текст скрипта (приведен ниже)
2. chmod +x ~/csv.sh
3. ~/csv.sh …....... запуск ….. спросит директорию, введешь и жди выполнения, результат - файл ~/out.csv
#!/bin/bash

read -p "Укажи полное название директории (примеры - /boot/grub или /home/user/Video)  " DIRNAME
find $DIRNAME -type f > ~/listing
N=$(cat ~/listing | wc -l)
cp /dev/null ~/out.csv
# для исключения ошибок, вызванных наличием пробелов в имени файлов,
# временно меняем глобальную переменную IFS - заменяем пробел на \
tmpIFS=$IFS; IFS='\'
count=0
cat ~/listing | (
     while read line ; do
     NAME=$(echo `stat -c%n $line`)
     BYTE=$(echo `stat -c%s $line`)
     ACCESS=$(echo `stat -c%x $line | awk '{ print $1 }'`)
     MODIFY=$(echo `stat -c%y $line | awk '{ print $1 }'`)
     CHANGE=$(echo `stat -c%z $line | awk '{ print $1 }'`)
     echo "$NAME;$BYTE;$ACCESS;$MODIFY;$CHANGE" >> ~/out.csv
     count=$((count+1))
     done
     echo "Всего файлов: $N ... Записано файлов: $count"
     )
exit 0
UPD ..... пробелы в имени файлах можешь не убирать, обработаются без ошибок ....
Ошибки не исчезают с опытом - они просто умнеют
vasek
странно
Внёс всё как описал выше


запускаю через консоль и использую sudo

создаёт фаил на выходе пустой.

пишет следующие: find: illigal option -- t
usage: find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression]
            find [-H | -L | -P] [-EXdsx] -f path [path ...] [expression]
Всего файлов: 0 ... Записано файлов: 0
Проверка
1. Запуск
~/csv.sh
Укажи полное название директории (примеры - /boot/grub или /home/user/Video): /boot/grub
Всего файлов: 350 ... Записано файлов: 350
2. Смотрим 5 строчек файла ~/listing
head -n 5 ~/listing
/boot/grub/i386-pc/extcmd.mod
/boot/grub/i386-pc/play.mod
/boot/grub/i386-pc/ohci.mod
/boot/grub/i386-pc/pci.mod
/boot/grub/i386-pc/all_video.mod
3. Смотрим 5 строчек файла out.csv
head -n 5 ~/out.csv
/boot/grub/i386-pc/extcmd.mod;4500;2013-02-12;2013-02-12;2013-03-06
/boot/grub/i386-pc/play.mod;2428;2013-02-12;2013-02-12;2013-03-06
/boot/grub/i386-pc/ohci.mod;10332;2013-02-12;2013-02-12;2013-03-06
/boot/grub/i386-pc/pci.mod;1428;2013-02-12;2013-02-12;2013-03-06
/boot/grub/i386-pc/all_video.mod;705;2013-02-12;2013-02-12;2013-03-06

Убеждаемся, что все работает ….
Вывод - похоже ты не понимаешь, что делаешь ….. и лучше тебе этим не заниматься ….
Ошибки не исчезают с опытом - они просто умнеют
vasek

Я понимаю что конкретно эту задачу делаю в первый раз и поэтому сталкиваюсь с определёнными трудностями ))))) не обесуть! Ну руки не под это заточены, поэтому не стоит злиться! вот

#!/bin/bash

read -p "/Volumes/Storage/BBBETCD/etc" DIRNAME
find $DIRNAME -type f > /Users/monder/Desktop/listing
N=$(cat /Users/monder/Desktop/listing | wc -l)
cp /dev/null /Users/monder/Desktop/out.csv
# ??? ?????????? ??????, ????????? ???????? ???????? ? ????? ??????,
# ???????? ?????? ?????????? ?????????? IFS - ???????? ?????? ?? \
tmpIFS=$IFS; IFS='\'
count=0
cat /Users/monder/Desktop/listing | (
     while read line ; do
     NAME=$(echo `stat -c%n $line`)
     BYTE=$(echo `stat -c%s $line`)
     ACCESS=$(echo `stat -c%x $line | awk '{ print $1 }'`)
     MODIFY=$(echo `stat -c%y $line | awk '{ print $1 }'`)
     CHANGE=$(echo `stat -c%z $line | awk '{ print $1 }'`)
     echo "$NAME;$BYTE;$ACCESS;$MODIFY;$CHANGE" >> /Users/monder/Desktop/out.csv
     count=$((count+1))
     done
     echo "vsego failov: $N ... Zapisano failov: $count"
     )
exit 0

А вот что на выходе

http://clip2net.com/s/3B4nQqv

Прошу понять и простить ))))
MyDestiny
А вот что на выходе

http://clip2net.com/s/3B4nQqv

Эпично +1)) Пересоберите теперь find))
Ошибки в тексте-неповторимый стиль автора©
MyDestiny, я тебе скинул готовый скрипт (и не нужно было его менять) и расписал, что нужно делать .... Еще раз уточняю ...
1. Запускаем любой редактор, хоть gui хоть консоль и вставляем текст, указанный ниже
#!/bin/bash

read -p "Укажи полное название директории (примеры - /boot/grub или /home/user/Video)  " DIRNAME
find $DIRNAME -type f > ~/listing
N=$(cat ~/listing | wc -l)
cp /dev/null ~/out.csv
# для исключения ошибок, вызванных наличием пробелов в имени файлов,
# временно меняем глобальную переменную IFS - заменяем пробел на \
tmpIFS=$IFS; IFS='\'
count=0
cat ~/listing | (
     while read line ; do
     NAME=$(echo `stat -c%n $line`)
     BYTE=$(echo `stat -c%s $line`)
     ACCESS=$(echo `stat -c%x $line | awk '{ print $1 }'`)
     MODIFY=$(echo `stat -c%y $line | awk '{ print $1 }'`)
     CHANGE=$(echo `stat -c%z $line | awk '{ print $1 }'`)
     echo "$NAME;$BYTE;$ACCESS;$MODIFY;$CHANGE" >> ~/out.csv
     count=$((count+1))
     done
     echo "Всего файлов: $N ... Записано файлов: $count"
     )
exit 0
Сохраняем, например, в домашней директории /home/имя_user/csv.sh
2. Делаем скрипт исполняемым
$ chmod +x ~/csv.sh (что равнозначно $ chmod +x /home/имя_user/csv.sh)
Этот файл НЕ МЕНЯЕМ ….(как делал ты)
3. Запускаем в консоле
$ ~/csv.sh (если создал файл в /home/имя_user/csv.sh) … и никаких sudo
После запуска увидишь сообщение и мигающий курсор
Укажи полное название директории (примеры - /boot/grub или /home/user/Video):  
здесь же, где курсор, набери полный путь к директории, которую хочешь обработать (примеры указаны там же) ….. проверь правильно ли набрал …. и жми Enter … жди завершения … после обработки высветится количество файлов. Все, результат в ~/out.csv

PS... ну не знаю, как еще точнее...
Ошибки не исчезают с опытом - они просто умнеют
vasek
Спасибо за терпении :) сделал всё как вы написали, пока жду ) файлов очень много , но вижу что скрипт работает хотя пишет с повторениями что-то новое Ж)
stat: illigal option -- c
usage: stat [-FlLnqrsx] [-f format] [-t timefmt] [file ...]
MyDestiny, нужно было сначала проверить на небольшой директории и проверить выходные файлы - listing и out.csv
PS.... в принципе можно добавить прогрессбар... но это уже делай сам
Ошибки не исчезают с опытом - они просто умнеют
 
Зарегистрироваться или войдите чтобы оставить сообщение.