在Linux中使用ls命令以全路径列出文件。

许多人可能会发现这是重复的问题,但在此之前,我已经浏览了所有关于此主题的问题,但没有一个适用于我。

我想使用ls命令打印特定文件格式的完整路径名,到目前为止,我找到了一大段代码,它将打印目录中的所有文件,但不会打印完整路径。

for i in io.popen("ls /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7"):lines() do
  if string.find(i,"%.*$") then
     print(i)
  end
end

这将打印出根目录和子目录中的所有文件。

输出:

  0020111118223425.lvf
  2012
  2012 (2009).mp4
  3 Idiots
  Aashiqui 2
  Agneepath.mkv
  Avatar (2009)
  Captain Phillips (2013)
  Cocktail

我希望输出如下:

  /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/0020111118223425.lvf           [File in Root Directory]
  /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/2012/2012.mkv
  /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/2012 (2009).mp4                [File in Root Directory]
  /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/3 Idiots/3 Idiots.mkv
  /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/Aashiqui 2/Aashiqui 2.mkv
  /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/Avatar (2009)/Avatar (2009).mkv
  /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/Captain Phillips (2013).mkv
  /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/Cocktail/Cocktail.mkv

编辑: 我尝试了一切,但它与我的LUA代码不兼容。

当我将其与我的代码一起使用时,它会显示错误的目录。

for i in io.popen("ls -d $PWD/* /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7"):lines() do
    if string.find(i,"%.*$") then
      print("/mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/"..i)
    end
  end

它未能在“/mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7”中找到文件,而是输出了机器根目录文件。

点赞
用户2392087
用户2392087

ls 命令只会打印出目录中文件的名称。那为什么不这样做呢:

print("/mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/" + i)

这将会打印出带有文件名的目录。

2014-12-07 06:40:32
用户3753125
用户3753125

有多种方法可以做到这一点,我认为最简单的方法是:

find /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7

另外这个也应该可以:

(cd /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7; ls | xargs -i echo `pwd`/{})
2014-12-07 06:47:53
用户3133817
用户3133817

你可以使用

  ls -lrt -d -1 "$PWD"/{*,.*}

它还会捕捉到隐藏文件。

2014-12-07 06:48:30
用户3824765
用户3824765

你可以尝试这个命令:

ls -d $PWD/*
2014-12-07 07:09:44
用户88888888
用户88888888

这段代码使用递归方式,输出当前目录下的所有文件。

find "$PWD" | awk /.ogg/ # 通过正则表达式过滤 .ogg 文件
find "$PWD" | grep .ogg  # 通过搜索词过滤 .ogg 文件
find "$PWD" | ack .ogg   # 通过 https://github.com/petdance/ack2 使用正则表达式或搜索词过滤 .ogg 文件
2015-03-24 03:35:18
用户88888888
用户88888888

列出当前目录下所有文件的完整路径

find $PWD -maxdepth 1

同上,但只匹配特定扩展名,不区分大小写(此处为 .sh 文件)

find $PWD -maxdepth 1 -iregex '.+\.sh'

$PWD 代表当前目录,可以替换为任何目录

mydir="/etc/sudoers.d/" ; find $mydir -maxdepth 1

maxdepth 选项可以防止 find 进入子目录,例如可以设置为 "2" 以列出子孙目录中的项目。如果需要递归,则可以将其删除。

使用 -type f 选项限制只列出文件

find $PWD -maxdepth 1 -type f
2016-03-02 02:03:37
用户1334561
用户1334561

你可以按照以下方式列出文件:

ls -d -1 $PWD/*.*

列出目录:

ls -d -1 $PWD/**

列出所有(文件/目录):

ls -d -1 $PWD/**/*

更有帮助的选项:

-d 列出目录而不列出其内容

-R 递归

-1 每行列出一个文件

-l 使用长格式列出

-a 列出全部,包括以 . 和 .. 开头的条目

-A 列出所有,但不列出隐含的 . 和 ..

要了解更多信息,只需输入以下命令:

ls --help
2016-04-06 11:08:12
用户5358004
用户5358004

我曾遇到过这个问题,我使用以下代码:

ls -dl $PWD/* | grep $PWD

这总能为我提供需要的列表,但你的情况可能有所不同。

2017-02-09 23:53:44
用户7305537
用户7305537

这对我有用:

ls -rt -d -1 $PWD/{*,.*}
2017-07-03 22:52:24
用户10346317
用户10346317

你只需要完整路径,为什么不使用为此设计的实用程序

使用 readlink 和 grep 的组合应该可以得到你想要的内容。

grep -R  '--include=*.'{mkv,mp4} ? | cut -d ' ' -f3  | xargs readlink -e #
问号应该替换为正确的模式 - 这几乎正确
# 如果不需要筛选器,这可能是最佳解决方案
find <dirname> | grep .mkv | xargs readlink -e |  xargs ls --color=auto # 仅限于带有不错颜色的目录和子目录中的 Matroska 文件 - 也可以编辑 ls 标志
find /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7 | grep .mkv
find /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7 | xargs grep -R  '--include=*.'{mkv,mp4} . | cut -d ' ' -f3 # 我相信 grep 可以做更多的事情
readlink -f `ls` # 在目录中
2019-01-14 19:33:26
用户6404949
用户6404949
尝试这个命令 - 

`readlink -f file.txt`
2020-04-17 21:02:05
用户2641825
用户2641825

使用以下命令输出完整路径(也称解析路径):

realpath README.md

在交互模式下,您可以使用 shell 扩展列出所有文件的完整路径:

realpath *

如果您正在编写 bash 脚本,我猜您会为单个文件名定义一个变量。

感谢 VIPIN KUMAR 指向相关的 readlink 命令。

2020-11-18 16:17:01
用户14878612
用户14878612

怎么样:

du -a [-b] [--max-depth=N]

这会给你一个文件和目录列表,相对于你当前的位置。你也能得到它们的大小(如果你想要字节为单位的大小,加上 '-b' 参数)。max-depth 参数可能需要调整,让 du 能够深入你的文件结构,或者避免它过多地展开。

你的情况可能会有所不同!

-101-

2020-12-23 15:02:37
用户17450826
用户17450826

如果你想要在子目录树中递归列出绝对路径名,可以使用 du 并将其管道送到 cut中。

2022-07-26 00:48:52