Portál AbcLinuxu, 10. května 2025 03:04
/pdf/profile/profile_rts test.pdf
for i in `find ./ -type f -name '*'`; do echo " -- $i"; done
vystup:
-- ./adb/files/pdf/profile/profile_rts
-- test.pdf
Nesetkal jste se s timto nekdo? Je nejake jednoduche reseni v bashi?
Diky Honza
ps:
bash --version
GNU bash, version 3.2.17(1)-release (i686-pc-linux-gnu)
for
, který seznam parametrů dělí podle bílých znaků. jednoduché řešení je nepoužívat for
a find
dohromady pro něco, co umí sám find
:
find ./ -type f -name '*' -exec echo " -- " "{}" \;
\;
(středník jako parametr, backslash jej uvozuje aby jej neinterpertoval shell) ukončuje spouštěný příkaz, místo {}
se postupně dosadí jména nalezených souborů.
for i in `find ./ -type f -name '*.java'`; do echo $i; awk '{if(tolower($0) ~ /select/) print NR " : " $0}' $i | sort -n; done
find ./ -type f -name '*.java' -exec echo {} \; awk '{if(tolower($0) ~ /select/) print NR " : " $0}' {} \; | sort -n
find: paths must precede expression: awk
-exec
find ./ -type f -name '*.java' -exec echo {} \; -exec awk '{if(tolower($0) ~ /select/) print NR " : " $0}' {} \; | sort -n
-exec
se chová jako podmínka: splněná, pokud příkaz vrátí nulu. Takže pokud první spouštěný příkaz skončí chybou, druhý už se neprovede.
find ... \ | while read filename do echo $filename ... done
for i in ./*; do echo " -- $i" done
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.