Только что я смог найти способ инвертировать файлы постскриптума (хотя он перестал работать для некоторых файлов, я предполагаю тех, которые так или иначе переопределяют изменение).
Добавление {1 exch sub} settransfer
поскольку первая команда в файле инвертировала бы цвета документа (включенные растровые изображения).
Для PDF → преобразование постскриптума, можно использовать pdftops
от libpoppler
(AFAIK, ghostscript pdf2ps
генерирует субоптимальные результаты). К сожалению, это не будет сохранено при генерации PDF из теперь отрицаемого файла постскриптума.
Обратите внимание, что некоторые средства просмотра PDF имеют способность инвертировать цвета, такой как xpdf
(который не инвертирует битовые массивы), и evince
(который инвертирует все, по-видимому, неважно, формат (PDF, постскриптум, djvu...)
Перечислите файлы, извлеките размер в байтах из списка, отсортируйте его и считайте возникновение каждого размера:
find /my/directory -type f -exec ls -l {} + | cut -d' ' -f5 | sort -n | uniq -c
awk '{ print $1 "," $2 }'
заставить файл CSV использоваться в Вашем предпочтительном инструменте построения графика (даже spreasheet инструменты сделает),Вариант Luke404 с GNU находит:
find . -type f -printf '%s\n' | sort -n | uniq -c
Этот код Perl может помочь:
@files = grep {-f} glob "*"; #List files in the current directory
%files;
for(@files)
{
chomp (my $size = \`du -h \"$_\"`);
$size=~ s/\s+.*//; #Remove the file name from the output of du
$files{$size}++; # Add an entry to the hash
}
print "Size,Count\n"; # Print a header
print "${\_},$files{$_}\n" for(keys %files); # Print info in CSV format
Отметьте следующее:
du
вместо -s
оператор Perl, чтобы иметь человекочитаемый вывод.glob "*"
glob "$ARGV[0]/*"
и предоставьте название своего необходимого каталога как параметр командной строки.Если Вы хотите перечислить содержание нескольких каталогов в пакетном задании, можно сохранить этот код как list_dir.pl
и имейте обертку удара, которая делает что-то вроде этого:
list_dir.pl dir1 > dir1_list.csv
list_dir.pl dir2 > dir2_list.csv
С другой стороны, код может быть далее изменен, чтобы принять несколько каталогов как аргументы и разветвить процесс для каждого каталога, который он ищет.
Я предполагаю, что Вы хотите файлы в текущем каталоге только один уровень глубоко (никакая рекурсия).
-l
опция кls
. Можно хотеть заменить\;
с+
сделать это более эффективным. – Stéphane Chazelas 07.11.2012, 17:08