Portál AbcLinuxu, 4. května 2025 19:23
#!/bin/bash # Pole se soubory, které nechci vypsat music=("mp3" "m3u") dir=$1 if [ -d "$dir" ]; then find "$dir"* ! -iname \*.mp3 -exec ls '{}' \; fiTo mi najde vše, kromě *.mp3, ale jak docílit požadované funkčnosti? Budu vděčný za mírné nakopnutí (protože se s tím chci poprat víceméně sám), ale nebráním se ani ukázkám.
Řešení dotazu:
find "$dir"* ! \( -iname \*.wav -o -iname \*.mp3 \) -exec ls '{}' \;
což prostě vygeneruješ z toho pole. Jiná možnost je použít file:
find "$dir" | xargs file -i | grep -v ': audio/' | ... něco co z toho vyhodí jména ...
#!/bin/bash # Pole se soubory, které nechci vypsat music=("mp3" "m3u") tmp_IFS=$IFS IFS="|" re="\.(${music[*]})$" IFS=$tmp_IFS dir=$1 if [ -d "$dir" ]; then find "$dir" -regextype posix-extended -type f -a ! -iregex "$re" fi
#!/bin/bash [ -d "$1" ] && find "$1" -type f | grep -Evi "\.(ogg|mp3|flac|m3u|wav)$"
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.