Вы можете сделать то же самое с помощью оболочки POSIX Расширения параметров без вызова отдельных утилит.Например, чтобы проверить, содержит ли файл '.'
, вы можете просто использовать test
, например:
[ "$i" = "${i%.*}" ]
См. Руководство программиста Posix - Язык команд оболочки - Расширение параметров
Если он проверяет TRUE, то расширение отсутствует, в противном случае вы можете использовать дополнительное расширение параметра , чтобы получить само расширение, например,
[ "$i" = "${i%.*}" ] && echo "$i - no suffix" || echo "$i - ${i##*.}"
( примечание: вам потребуется дополнительный тест для исключения .foo
(например, dotfiles ), но это вам остается)
Оберните это в цикл и исключите файлы каталогаи вы можете проверить каждый файл в каталоге или использовать read
в цикле и передать ему список имен.Например, зацикливание файлов в каталоге приведет к:
...
ftlcdfil.c - c
geany-plugin_build_w_gtk+2.patch - patch
geany-plugins.spec - spec
geany.spec - spec
geany_build_w_gtk+2.patch - patch
getfl - no suffix
gtkw_save_test.txt - txt
gtkwrite-master.zip - zip
helloleap - no suffix
helloleap.c - c
jnl - no suffix
messages - no suffix
opensuse_15.0_1s_delay.svg - svg
...