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

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: 2105
Rejestracja: 2007-07-24, 18:58
Lokalizacja: Racibórz/Rybnik

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: 3343
Rejestracja: 2004-06-14, 21:58
Lokalizacja: Linux 5.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 code name ‘mina86’ in response to the previous one.
ODPOWIEDZ