Выполните ls, не получая полный путь

Я хочу простой список файлов в каталоге, который не является моим текущим каталогом. Я работаю ls /other/directory/*.txt и доберитесь:

/other/directory/file1.txt
/other/directory/file2.txt

Я хочу:

file1.txt
file2.txt

Как я могу получить второй список?

5
задан 11.11.2010, 17:58

4 ответа

(cd /other/directory && ls)

13
ответ дан 07.12.2019, 16:49

Есть ли некоторая причина, почему Вы не можете использовать ls -1 ?

$ ls -1 /other/directory
file1
file2

Править:

Я замечаю, что Вы изменили вопрос теперь - мое решение не будет работать с Вашим новым примером ls /other/directory/*.txt. Используйте что-то как решение khachik вместо этого, например.

$ (cd /other/directory && ls -1 *.txt)
3
ответ дан 07.12.2019, 16:49
for i in `ls /some/directory` ;do basename $i;done

Выражение в '' расширено до файлов, затем каждый из них передается базовому имени. Протест: не работает с файлами, содержащими пробелы!

0
ответ дан 07.12.2019, 16:49

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/

Мы заменяем всем с начала строки ^ до последнего / (/ специальный символ, таким образом, мы должны выйти из него \\/) ни с чем - т.е. удаление его и таким образом отъезд Вас только с именем файла.

1
ответ дан 07.12.2019, 16:49

Теги

Похожие вопросы