Portál AbcLinuxu, 2. listopadu 2025 03:25
#!/bin/bash
# Pole se soubory, které nechci vypsat
music=("mp3" "m3u")
dir=$1
if [ -d "$dir" ]; then
find "$dir"* ! -iname \*.mp3 -exec ls '{}' \;
fi
To 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.