ls
, cp
, mv
или rm
. Тук реших да събера не чак толкова основни команди, а такива, които оптимизират работата и правят решаването на даден проблем възможно за кратко време. Първото нещо, за което се сещам е една опция на командата
find
, -exec
. Тази опция позволява да бъде изпълнена команда, която да "работи" с резултатите, които връща find
. Приемаме следната ситуация. Имаме една директория /data/
, в която имаме стотици поддиректории и стотици файлове с различни разширения. Трябва да изтрием всички файлове с разширение jpg
от всички директории. Тази работа ще свърши следната команда:find /data/ -iname "*.jpg" -type f -exec rm {} \;
При изпълнението на командата лявата и дясна цица (
{}
) приемат стойността на всеки резултат върнат от find
. В случая, това са намерените файлове. В случай, че целта е да изтрием не само jpg
, но и gif
и bmp
файловете, командата ще изглежда така:find /data/ \( -iname "*.jpg" -o -iname "*.gif" -o -iname "*.bmp" \) -type f -exec rm {} \;
Ако целта е да бъдат изтрити всички
jpg
и gif
файлове, с изключение на тези, които се намират в поддиректорията /daat/newfiles/
командата ще е следната.find /data/ -path '/data/newfiles' -prune -o \( -iname "*.jpg" -o -iname "*.gif" \) -type f -exec rm {} \;
От тук нататък е само въпрос на въображение ;-).
Темата излезе доста дълга и сега ще спомена само някои неща, които ми се струват полезни, а друг път ще пиша за други команди и полезни скриптчета.
В Slackware при копиране на файлове в конзола, презаписването на един файл върху друг става без съгласието на потребителя. Опцията, която казва на
cp
, да пита преди да презапише даден даден файл е -i
. За да не се налага всеки път да пишете cp -i
, добро решение е да добавите следния ред в ~/.bash_profile
: alias 'cp=cp -i'
За да го добавите, без да се налага да отваряте и да редактирате файла ръчно изпълнете следната команда.
echo "alias 'cp=cp -i'" >> ~/.bash_profile
Други полезни опции са:
rm -i
- пита дали да изтрие даден файл.mv -i
- пита дали да презапише един файл върху друг при местене.Горните две могат да се добавят в
~/.bash_profile
по следния начин:echo "alias 'rm=rm -i'" >> ~/.bash_profile
echo "alias 'mv=mv -i'" >> ~/.bash_profile
Всички команди изброени по-горе се пишат на едни ред. Причината някои от тях да са на два реда е начина на форматиране на страницата. В случай, че искате да напишете дадена команда на повече от един ред, всеки ред, който не е последен от командата трябва да завършва с "\" (без кавичките). Например:
mv -i \
/dir_1/subdir_1/subsubdir_1/file1 \
/dir_2/subdir_2/subsubdir_2
Ехаа, ей такива теми най-обичам. :)
ОтговорИзтриванеСъвсем сериозно, повечето неща съм се чудил как стават, сега има от къде да видя, без да тровя човека по icq :P
Отново благодаря на г-н Тодоров за усилията и времето, което отделя за споделяне на опит и т.н.
==
Понякога чак ми е неудобно да те тровя с моите неща, но .. :mrgreen: