2011-11-15 4 views
1

Я пытаюсь сортировать вывод этого кода по размеру файла. В настоящее время у меня есть:Сортировка массива bash

IFS=! 
FILEARRAY=(`find * -printf %f!`) 

, чтобы получить все имена файлов из каталога. Я пробовал использовать всевозможные способы, и ничего не работает. Возможно ли это сделать так или мне нужно, чтобы получить имена файлов в моем массиве по-другому?

Благодаря

+1

Я получаю 'bash:!: Event not found', когда пытаюсь запустить эту команду. –

ответ

0

Не уверен, что вы пытаетесь достичь здесь, но извлечь размер файлов, которые вы можете захотеть использовать sed. передать его sort или какой-либо другой утилите сортировки. xargs, который дает вам дополнительные возможности при работе с трубопроводами и может быть полезен.

Edit: Если вы пытаетесь сортировать все файлы в текущем каталоге по размеру, Somthing так:

find ./ -name "*" | xargs ls -s | sort -n 

должен работать.

0

попробовать что-то вроде этого, вместо:

FILEARRAY=$(find * -printf '%s~%f\n' | sort -n | awk -F"~" '{print $2}') 

Это должно дать вам список имен файлов, отсортированных по размеру.

0

Не использует массивы bash. Также does not parse ls

find . -type f -printf '%s:%f\n' | sort -t: -n -k1 | cut -d: -f2- 
Смежные вопросы