运行 ls 而不获取完整路径

运行 ls 而不获取完整路径

我想要一个非当前目录下文件的简单列表。我运行ls /other/directory/*.txt并得到:

/其他/目录/file1.txt
/其他/目录/file2.txt

我想:

文件1.txt
文件2.txt

我怎样才能获得第二个列表?

答案1

(cd /other/directory && ls)

答案2

有什么原因导致您无法使用ls -1

$ ls -1 /other/directory
file1
file2

编辑:

我注意到你现在改变了问题——我的解决方案不适用于你的新示例ls /other/directory/*.txt。使用类似哈奇克的解决方案,例如

$ (cd /other/directory && ls -1 *.txt)

答案3

ls -1 /other/directory/*.txt |xargs basename

  • -1每行将列出一个文件,仅包含文件名(或路径)
  • 使用通配符和/或提供ls完整路径将输出每个文件的完整绝对路径。basename将删除路径,仅留下文件名。

答案4

1)我不确定这是否应该出现在 superuser.com 上

2) ls 无论如何都不会打印完整路径:ls -1 /your/dir

编辑问题已更改。根据 Paul 在下面的评论,我正在更新我的答案。您可以这样做:

ls -1 /home/rich/*.txt | sed s/^.*\\/\//

这是减 1,而不是 l,尽管 l 也可以。说明:ls -l/-1 会写出包含您不想要的内容的文件名。每行都通过 sed 进行管道传输,sed 在此处执行替换,如 s/ 所指定。替换的形式如下:

s/text/replacement/

我们将用空值替换从行首^到行末的所有内容//是一个特殊字符,因此我们必须对其进行转义\\/),即将其删除,这样就只剩下文件名了。

相关内容