Титла: Малко помощ за bash Публикувано от: toti84 в Mar 24, 2009, 09:20 Здравейте,
целта ми е да изтрия всички файлове с разширение .txt и използвам следния ред: Код: rm `find /root/proba/ -name "*.txt"` И въпроса ми е какво трябва да се барне, че да сработи напълно ... Титла: Re: Малко помощ за bash Публикувано от: foxb в Mar 24, 2009, 09:43 От
http://blog.hbcom.info/archives/4 find /root/proba/ -name "*.txt"| xargs /bin/rm Титла: Re: Малко помощ за bash Публикувано от: toti84 в Mar 24, 2009, 10:14 ОтНе се получава Код
Титла: Re: Малко помощ за bash Публикувано от: shoshon в Mar 24, 2009, 10:52 Защо стреляме по зайци с галбица?
Код: cd [директория] // мерси за поправката от neter -R за рекурсивност, а другото да не те пита на всеки файл Все пак от вашия подход личи,че имате някакъв колосален замисъл с вероятен епичен край. За това е то ти по сложна команда: Код: find /["голяма" директория] | grep [маркер или рег. израз] | rm --interactive=none Титла: Re: Малко помощ за bash Публикувано от: neter в Mar 24, 2009, 11:41 Да дам и аз два примера :) Да се разглеждат отделно
Код
shoshon, забравил си да споменеш, че преди изпълнението на първия ти пример, трябва първо да се изпълни cd до нужната папка. В противен случай е възможно да стане голям сакатлък ;) Титла: Re: Малко помощ за bash Публикувано от: radoulov в Mar 24, 2009, 12:04 С bash4:
Код
Ако искаш да включиш и dotfiles прибави dotglob. С която и да е shell и find, който поддържа опцията +: Код
Ако искаш да не включваш dotfiles: Код
Титла: Re: Малко помощ за bash Публикувано от: radoulov в Mar 24, 2009, 12:14 Защо стреляме по зайци с галбица? От man rm | less -p'^ *-r': Цитат -r, -R, --recursive ... т.е., не е това, което toti84 иска. Това е с bash4, иначе трябва да използваш find: Код
Титла: Re: Малко помощ за bash Публикувано от: gizi_ в Mar 24, 2009, 12:18 Тъй като си мисля, че се пробвате да си мерите....знанията реши и аз да се запиша в конкурса:
Код: find . -maxdepth 1 -name "*.txt" | sed -e 's/^/\"/' -e 's/$/\"/' | xargs rm като с този код чрез -maxdepth може да се ограничи до коя под директория трябва да се изтрият файловете. А "." ни показва да търсим в директорията в която се намираме както вместо нея може да ползваме и /път/до/директорията . Лек ден на всички ;D ! Титла: Re: Малко помощ за bash Публикувано от: radoulov в Mar 24, 2009, 12:43 Тъй като си мисля, че се пробвате да си мерите....знанията [...] Не си мерим знанията, ами се опитваме да дадем правилно решение ... Титла: Re: Малко помощ за bash Публикувано от: Hapkoc в Mar 24, 2009, 12:45 Код: find . -name '*.txt' -print0 | xargs -0 rm Титла: Re: Малко помощ за bash Публикувано от: mikis в Mar 24, 2009, 14:39 Ей това е най-елегантното решение, таман мислех да го напиша. Другите са малко "за Перник през Бургас" ;) Ето и какво казва 'man find' за тая опция: Цитат -print0 Титла: Re: Малко помощ за bash Публикувано от: radoulov в Mar 24, 2009, 16:13 Ей това е най-елегантното решение, таман мислех да го напиша. Другите са малко "за Перник през Бургас" ;) И защо трябва да използваш две програми (find и xargs), след като find (Solaris, BSD и GNU) поддържа/емулира вътрешно xargs с оператора +? Титла: Re: Малко помощ за bash Публикувано от: toti84 в Mar 24, 2009, 17:11 Благодаря на всчки
спрях се на този ред: Код
най-много ми радва окото. Титла: Re: Малко помощ за bash Публикувано от: mikis в Mar 25, 2009, 00:34 И защо трябва да използваш две програми (find и xargs), след като find (Solaris, BSD и GNU) поддържа/емулира вътрешно xargs с оператора +?Това, което си дал не го видях, а откровено казано не го и знаех ;) Просто отдавна ползвам горния метод основно да правя чексуми на файлове пръснати из директориите и затова ми се струваше най-елегантния метод :) Титла: Re: Малко помощ за bash Публикувано от: fleimyr в Mar 25, 2009, 14:43 решенията с `` и xargs са леко криви.
Код: $pwd Титла: Re: Малко помощ за bash Публикувано от: fleimyr в Mar 25, 2009, 15:16 Здравейте, в името на педантизма в условието трябва да се добави че и с поне TAB не работи ;-) Код: $touch "a`printf '\t'`b" Титла: Re: Малко помощ за bash Публикувано от: radoulov в Mar 25, 2009, 15:48 [...] В този случай можеш дори да използваш ANSI strings, ако твоята shell ги поддържа: Код
|