许多人会发现,这是重复的问题,但我已经经历了所有问题之前被问及有关这个话题,但没有为我工作。
我想使用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/{*,.*}