ls /home/user/new/*.txt
печать все txt файлы в том каталоге. Однако это печатает вывод следующим образом:
[me@comp]$ ls /home/user/new/*.txt
/home/user/new/file1.txt /home/user/new/file2.txt /home/user/new/file3.txt
и так далее.
Я хочу работать ls
команда не от /home/user/new/
каталог таким образом, который я должен дать полному имени каталога, все же я хочу, чтобы вывод был только как
[me@comp]$ ls /home/user/new/*.txt
file1.txt file2.txt file3.txt
Я не хочу весь путь. Только имя файла необходимо. Это выходит, должен быть решен с помощью ls команду, поскольку ее вывод предназначен для другой программы.
Выбранный ответ не работал на меня, поскольку у меня были пробелы, кавычки и другие странные символы в моих именах файлов. Для заключения в кавычки входа для basename
необходимо использовать:
ls /path/to/my/directory | xargs -n1 -I{} basename "{}"
Это, как гарантируют, будет работать, независимо от того, чем называют файлы.
Существует много способа, которым мы можем сделать это, и просто можно попробовать следующее.
ls /home/user/new | tr '\n' '\n' | grep .txt
Другой метод:
cd /home/user/new && ls *.txt