bash: wykonywanie rekursywnych operacji w podkatalogach

Problemy dotyczące programowania.

Moderatorzy: Moderatorzy, Administratorzy

vitos
Użytkownik
Posty: 104
Rejestracja: 2005-10-30, 09:13
Lokalizacja: Pszów
Kontakt:

bash: wykonywanie rekursywnych operacji w podkatalogach

Post autor: vitos »

Mam katalog /test, a w nim trzy podkatalogi: 1, 2 oraz 3.

Chciałbym w każdym z nich założyć pusty plik o nazwie pusty_plik

Dotychczas robiłem to w taki sposób (będąc w katalogu test):

Kod: Zaznacz cały

for dir in $(find . -type d -mindepth 1); do cd $dir; touch pusty_plik; cd ..; done
Czy da radę zrobienie tego samego za pomocą samego find'a i -execdir'a ?

Głowię się i głowię i nie mogę wymyślić :help:

Dzięki za pomoc
Witek

Awatar użytkownika
dienet
Moderator
Posty: 2106
Rejestracja: 2007-07-24, 18:58
Lokalizacja: Racibórz/Rybnik
Kontakt:

Re: bash: wykonywanie rekursywnych operacji w podkatalogach

Post autor: dienet »

Kod: Zaznacz cały

find . -type d -mindepth 1 -exec touch {}/pusty_plik  \;
bo dla -execdir jest:
-execdir command {} +
Like -exec, but the specified command is run from the subdirec-
tory containing the matched file, which is not normally the
directory in which you started find.
a wg. mnie on znajduje pliki w kat . a nie w podkatalogach.
Usuwanie ich (pusty_plik) było by możliwe przy pomocy execdir.
Ostatnio zmieniony 2009-12-19, 12:23 przez dienet, łącznie zmieniany 2 razy.
Pozdr0
dienet
[img]http://i164.photobucket.com/albums/u19/slawek15/kotekeo0lq3.jpg[/img]

Awatar użytkownika
mina86
Moderator
Posty: 3314
Rejestracja: 2004-06-14, 21:58
Lokalizacja: Linux 4.x x86_64
Kontakt:

Re: bash: wykonywanie rekursywnych operacji w podkatalogach

Post autor: mina86 »

vitos pisze:for dir in $(find . -type d -mindepth 1); do cd $dir; touch pusty_plik; cd ..; done
O wow... Pomijam już, że polecenie wysypie się na ścieżkach z białymi znakami, ale cd? Nie prościej:

Kod: Zaznacz cały

find */ -type d | while read d; do : >$d/pusty_plik; done
Ten kod z kolei sypie się na nazwach ze znakiem przejścia do nowej linii.
Zastrzegam sobie prawo nieanalizowania postów pisanych niepoprawną polszczyzną. :: Post generated automatically by A.I. system called “mina86” in response to the previous one. :: Tiny Applications

ODPOWIEDZ