使用完整path的Linux中的ls命令列出文件

许多人会发现,这是重复的问题,但我已经经历了所有问题之前被问及有关这个话题,但没有为我工作。

我想使用ls命令打印完整path名称的某种文件格式,到目前为止,我发现了大量的代码,将打印目录中的所有文件,但不是完整的path。

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”中的文件insted打印机器的根目录文件。

您可以使用

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

它也会捕获隐藏的文件。

你可以试试这个:

 ls -d $PWD/* 

用全路径列出所有内容,只能在当前目录中列出

 find $PWD -maxdepth 1 

与上面相同,但只匹配特定的扩展名,不区分大小写(在这种情况下为.sh文件)

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

$ PWD是为当前目录,它可以被任何目录替换

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

maxdepth阻止查找进入子目录,例如,您也可以将其设置为“2”以列出子项中的项目。 如果您需要递归,只需将其删除即可。

要将其限制为只有文件,可以使用-type f选项。

 find $PWD -maxdepth 1 -type f 

您可以轻松使用以下内容仅列出文件:

 ls -d -1 $PWD/*.* 

以下列出目录:

 ls -d -1 $PWD/** 

以下列出一切(文件/目录):

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

更有帮助的选项:

-d列出目录不是它们的内容

-R递归

-1每行列出一个文件

-l使用长列表格式

– 列出所有包括开头的条目。 和..

– 列出所有,但不列出暗示。 和..

有关更多信息,请输入以下内容

 ls --help 

这将从当前目录递归地打印所有文件。

 find "$PWD" | awk /.ogg/ # filter .ogg files by regex find "$PWD" | grep .ogg # filter .ogg files by term find "$PWD" | ack .ogg # filter .ogg files by regex/term using https://github.com/petdance/ack2 

ls命令将只打印目录中文件的名称。 为什么不这样做

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

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

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

 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`/{}) 

我有这个问题,我使用以下:

ls -dl $ PWD / * | grep $ PWD

它总是让我上市,我想要的,但你的里程可能会有所不同。

这对我工作:

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