LinuxForum.Fans
Тема

[Решено] Передача аргументов команде ls

Автор: tmp13 9 сообщений 3416 просмотров
#39815

Вообщем задача выглядит так:
Надо вывести список определённых файлов в каталоге размер которых не равен 41 на данный момент сделал:

text
ls -la lalal*.txt|awk '{if($5!='41'){print $9}}'

теперь задача усложнилась
а именно исходный список файлов хочется получать из другого файла т.е:
allfiles.lst:

text
lalal.txt
pamparam.txt
yasoshlasyma.txt

хочется написать конструкцию типа

text
cat allfiles.lst|ls -la <тут вывод cat>|awk '{if($5!='41'){print $9}}'
#39816

man xargs

#39819

точно можно только без man

#39820
tmp13 написал:
точно можно только без man

Не поняла. Нужен пример команды?
Вот вариант:

text

cat allfiles.lst|xargs ls -la |awk '{if($5!='41'){print $9}}'

Но будут большие проблемы, если в именах файлов будут пробелы.

вот вариант лучше

text

cat allfiles.lst|xargs -d "\n" ls -la |awk '{if($5!='41'){print $9}}'
#39826

спасибо, сделал)
нет в именах пробелов не будет точно.

#41688
tmp13 написал:
Надо вывести список определённых файлов в каталоге размер которых не равен 41 на данный момент сделал:

может покурите man find на предмет опции size? использование тут ls - не самая лучшая идея. вы используете её для вычисления размера файлов, но намного лучше сделать это другой командой - stat, она выдаст размер без всякого мусора, который вы фильтруете. также это может сделать и find
[console]doc@bx:~$ stat -c "%s" /tmp
4096
doc@bx:~$ find /tmp -maxdepth 0 -printf "%s\n"
4096[/console]

зачем вы суда навернули ls и awk - совершенно непонятно.

#42364

гммм
2drBatty да спасибо может оказаться полезным.. man почитаю, но сходу хотел спросить
позволит ли stat вычислять реальный размер gzip файла?
просто если сделать gzip даже пустому файлу его размер станет не 0.

#42403
tmp13 написал:
позволит ли stat вычислять реальный размер gzip файла?
просто если сделать gzip даже пустому файлу его размер станет не 0.

*.gz это не файл, это архив... т.е. файл, который записан особым образом (так, что многие файлы становятся меньше, но далеко не все!). а для stat все файлы одинаковые.

вам поможет сама gzip:
[console]
$ gzip -l zc.txt.gz
compressed uncompressed ratio uncompressed_name
132 127 15.7% zc.txt
[/console]

а ещё в EXT3,4 можно юзать разряжённые файлы (их размер измеряется командой du, как и каталогов)

#42421

на серваке HP-UX там vxfs) но вообще du там вроде пашет хотя не очень понял что вы имели ввиду по поводу разряженных файлов)
да проверку размера щас всю на gzip переделаю.
спасибо за совет)

правда я терь задумался как это всё совместить))
Вообще так как стат отсутствует мне пришло в голову какой то странное решение но работает:

text
awk '{print "/home/peter/"$1".gz"}' /home/peter/List_files/list_lala.lst| xargs ls| xargs gzip -l | sed '1d;$d' | awk '{if($2!=0){print $4}}'

P.S на HP-UX нет команды stat(

Войдите или зарегистрируйтесь, чтобы ответить.