Есть ли некоторая причина, почему Вы не можете использовать ls -1
?
$ ls -1 /other/directory
file1
file2
Править:
Я замечаю, что Вы изменили вопрос теперь - мое решение не будет работать с Вашим новым примером ls /other/directory/*.txt
. Используйте что-то как решение khachik вместо этого, например.
$ (cd /other/directory && ls -1 *.txt)
for i in `ls /some/directory` ;do basename $i;done
Выражение в '' расширено до файлов, затем каждый из них передается базовому имени. Протест: не работает с файлами, содержащими пробелы!
1) Я не уверен, что это не должно быть на superuser.com
2) ls не печатает полный путь так или иначе: ls -1 /your/dir
Редактирование вопрос изменилось. На комментарий Paul ниже я обновляю свой ответ. Можно сделать это как это:
ls -1 /home/rich/*.txt | sed s/^.*\\/\//
Это минус 1, не l, хотя l работает также. Объяснение: ls-l/-1 выписывает имена файлов с материалом, который Вы не хотите. Каждая строка передается по каналу через sed, который здесь делает замену, как указано s/. Замена принимает форму:
s/text/replacement/
Мы заменяем всем с начала строки ^
до последнего /
(/
специальный символ, таким образом, мы должны выйти из него \\/
) ни с чем - т.е. удаление его и таким образом отъезд Вас только с именем файла.