Сколько файлов в текущем каталоге:
ls -1| wc -l
5 процессов, которые больше всего нагружают процессор системы:
ps -eo user,pcpu,pid,cmd | sort -r -k2 | head -6
Получить упорядоченный список пользователей системы:
sort /etc/passwd
Если вам нужны лишь имена пользователей, тогда нужно отсеять часть данных. К примеру, так:
sort /etc/passwd | cut -d":" -f1
Если требуются лишь настоящие пользователи, отдайте следующую команду:
gawk '$3 >= 500 {print $1 }' FS=":" /etc/passwd | sort
Создать резервные копии лишь .php-файлов, добавив к их имени .bkp - вот так filename.bkp. Это реализует следующий однострочник:
for f in *.php; do cp $f $f.bkp; doneЛибо
for f in *.php; do cp $f{,.bkp}; done
Создать резервную копию большого объема данных:
tar cf - . | (cd /usr/backups/; tar xfp -)
Создание архива на удаленном сервере:
tar cf - . | ssh smith@remote.server tar xfp - -C /usr/backup/smith
Требуется получить отчет по входящим почтовым сообщениям, примерно так:
cat incoming_emails 2008-07-01 08:23:17 user1@example.com 2008-07-01 08:25:20 user2@someplace.com 2008-07-01 08:32:41 somebody@server.net 2008-07-01 08:35:03 spam not recived, filtered 2008-07-01 08:39:57 user1@example.com ...
Итак, требуется отчет, содержащий адреса получателей. Как видно, некоторые адресаты повторяются, а нам это не нужно. Следующий однострочник решает эту задачу:
awk '/@/ {print $3}' incoming_email | sort -uлибо
grep '@' incoming_email | cut -d ' ' -f 3 | sort -u
В текущей директории рекурсивно сменить разрешения на все директории
find ./ -type d -exec chmod 775 {} \;
то же для файлов
find ./ -type f -exec chmod 664 {} \;
Как в -exec find'а выполнить не одну а несколько комманд:
find . -type f -exec sh -c "echo '{}' | iconv -f cp1251 -t utf8 > '{}'.utf8 && mv '{}'.utf8 '{}'" \;
Можно просто несколько раз использовать -exec
find . -exec echo {} \; -exec echo {} \;
chmod +X устанавливает флаг x для u,g,o,a (как указано), если он стоит хотя бы для кого-нибудь (т.е. owner-executable-only => a+x, но текстовый файл a+x не получит).
chmod -R a+rX directory
Увеличение громкости всех ogg текущей папке.
find . -iname '*.ogg' -exec sh -c "echo \"{}\" && sox \"{}\" tmp.ogg vol 1.7 && mv tmp.ogg \"{}\"" \;
Конвертим все теги mp3-файлов в текущем каталоге с cp1251 на unicode (необходим mp3unicode!):
find . -name "*.mp3" -exec mp3unicode –source-encoding windows-1251 –id3v1-encoding none –id3v2-encoding unicode {} \;
Чистка логов:
find /var/log -type f -exec sh -c ':> "{}"' \;
Не забываем что xargs берет многострочный вывод одной команды и отдает по строке в качестве аргументов другой команде.
find . -name "*.txt" | xargs grep foo
Использование ключа -c в команде uniq может посчитать количество уникальных строк, например узнать, кто больше всех послал мне сообщений:
cat mail_list | sort | uniq -c | sort -nr | head -n -5 63 foo1@verizon.net 24 support@fbar.com 22 bar1@comcast.net 20 foo2@verizon.net 9 abcxyz123@verizon.net
Конвертирование пачки файлов из JPG в GIF с понижением количества цветов до 8:
for file in $(ls *.jpg) ; do convert -verbose -colors 8 ${file} ${file%.jpg}.gif ; done
Конвертирование WAV в MP3 и установка битрейта, равным 32 (в несольких директориях):
for DIR in $(ls -d1 *) ; do for FILE in $(ls -1 ${DIR}/*.wav); do lame -b 32 "${FILE}" "${FILE%.wav}.mp3" ; done ; done
Найти самый большой файл:
find <dir> -type f -print | xargs ls -s | sort -rn | head
Самый крупный каталог:
du -sk * |sort -n
Размер всех вложенных каталогов:
du --max-depth=1 -h
Скопировать большое количество вложенных каталогов, исключая определенные файлы:
tar --exclude='*.doc' -cf - | (cd /destination; tar xf -)
Комментариев нет:
Отправить комментарий