как я могу распечатать имя каждого файла в определенном каталоге с определенным расширением?
Вот что у меня есть:
#!/bin/sh DIR="~/Desktop" SUFFIX="in" for file in $DIR/*.$SUFFIX do if [ -f $file ]; then echo $file fi done
К сожалению, это не работает.
Что с ним не так?
В вашем DIR = "~ / Desktop" "~" не развернуто, потому что оно в "".удалить "".DIR = ~ / Desktop
Вы можете использовать поиск с -type f
-type f
#!/bin/sh DIR="~/Desktop" SUFFIX="in" find "$DIR" -maxdepth 1 -type f -name "*.${SUFFIX}" -exec somecommand {} \;
Для справки: "file" в системах Unix обычно является именем команды.
Его цель - проанализировать файлы, указанные в качестве аргумента, и вывести формат. Пример:
$ file entries.jar entries.jar: Zip archive data, at least v2.0 to extract
for file in `ls $DIR/*.$SUFFIX`
Обратите внимание на ls и галочки
ls