Я столкнулся с проблемой при использовании basename
в списке файлов, найденных с find
.По какой-то причине basename
решает удалить второй элемент списка find
, когда нужно найти только два файла.
gas$ ls -l
total 8
-rwxrwxrwx 1 gas staff 54 Feb 26 19:00 find_sh.sh
-rw-r--r-- 1 gas staff 0 Feb 26 19:21 test-file.sh
gas$ find . -type f -name '*.sh'
./find_sh.sh
./test-file.sh
gas$ basename $(find . -type f -name '*.sh')
find_sh.sh
Добавление третьего файла, кажется, исправляет его длянеясная причина (см. ниже)
gas$ touch test-file2.sh
gas$ basename $(find . -type f -name '*.sh')
find_sh.sh
test-file.sh
test-file2.sh
Кто-нибудь знает, что происходит с базовым именем второго файла?Я без ума от того, что происходит не так.
Я нашел решение для угробления basename
и просто использовал sed 's/.*\///'
, чтобы удалить путь в имени.
Так что даже если я найду решение, мне все равно интересно, что не так с basename
, когда нужно отобразить два файла:)
Заранее спасибо!