Portál AbcLinuxu, 10. května 2025 07:37
for i in "`ls //f/strom`";
do mp3=`ls //f/strom/"$i" |grep -c mp3`
if [ "$mp3" == "0" ]
then
echo "$i"
fi;
done
Tusi nekdo, kde se deje chyba? (Mozna je to zbytecne slozity, ale stejne me zajima, kde jsem udelal chybu... Diky!
Spoustim to pod win-bashem, proto ty divne cesty, nicmene stejne se to chova i na linuxu s linuxovymi cestami...
for i in $(ls //f/strom); do mp3=$(ls //f/strom/"${i}" |grep -c mp3); if [ "$mp3" == "0" ]; then echo "$i"; fi; done
ls -1 //f/strom | while read adresar; do mp3=$(ls //f/strom/"${adresar}" | grep -c mp3); if [ "$mp3" == "0" ]; then echo ${adresar}; fi done
for i in `find /f/strom/ \! -name '*.mp3'`; do echo ${i%/*} done
for i in //f/strom/*; do mp3=`ls "$i" |grep -c mp3`; if [ "$mp3" == "0" ]; then echo "$i"; fi; doneNebo dalsi varianta (takhle bych to napsal asi ja):
for i in //f/strom/*; do (cd "$i"; ls *.mp3 1>/dev/null 2>&1 || echo "$i"); done
//f/strom/*nesmi byt v uvozovkach. Dalsi moznost je ze adresar //f/strom/ je prazdny (pak to nahradi puvodnim vyrazem - //f/strom/*). Jinak kdyz to zkusim:
chocholj@cz995891 ~ $ ls -R ~/tmp/b1 -w 1 /home/chocholj/tmp/b1: a b c d e f g /home/chocholj/tmp/b1/a b: q w.mp3 /home/chocholj/tmp/b1/c d: /home/chocholj/tmp/b1/e f g: chocholj@cz995891 ~ $ for i in ~/tmp/b1/*; do mp3=`ls "$i" |grep -c mp3`; if [ "$mp3" == "0" ]; then echo "$i"; fi; done /home/chocholj/tmp/b1/c d /home/chocholj/tmp/b1/e f gTak se to chava snad podle ocekavani.
#!/usr/bin/python import os for root, dirs, files in os.walk('.'): for filename in files: if filename.lower().endswith('.mp3'): break else: print root
-maxdepth 1
( find -type d ; find | sed -n '/\.mp3$/s;/[^/]*$;;p' ) | sort | uniq -c | grep '^[[:space:]]*1 '
cd //f
for i in `cat missing.txt`;
do for m in ls `ls $i`; do echo $m; done;
done
Muzu takhle zaloopovat dve for do sebe? Pac mi to vypisuje ": No such file or directory"... Kdyz misto `ls $i` dam $i/*, nahradi to prvni dva znaky v ceste "/*" ...je to nejaka vlastnost starsiho bashe, musi se na nej jinak?
cd /f <missing.txt while read dirname; do echo "dirname: $dirname" for filename in `ls $dirname`; do echo "filename: $filename"; done; donea pro blok textu používejte značku
pre
i když ten code
láká víc.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.