在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”中找到文件,而是输出了机器根目录文件。
有多种方法可以做到这一点,我认为最简单的方法是:
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 -lrt -d -1 "$PWD"/{*,.*}
它还会捕捉到隐藏文件。
你可以尝试这个命令:
ls -d $PWD/*
这段代码使用递归方式,输出当前目录下的所有文件。
find "$PWD" | awk /.ogg/ # 通过正则表达式过滤 .ogg 文件
find "$PWD" | grep .ogg # 通过搜索词过滤 .ogg 文件
find "$PWD" | ack .ogg # 通过 https://github.com/petdance/ack2 使用正则表达式或搜索词过滤 .ogg 文件
列出当前目录下所有文件的完整路径
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
你可以按照以下方式列出文件:
ls -d -1 $PWD/*.*
列出目录:
ls -d -1 $PWD/**
列出所有(文件/目录):
ls -d -1 $PWD/**/*
更有帮助的选项:
-d 列出目录而不列出其内容
-R 递归
-1 每行列出一个文件
-l 使用长格式列出
-a 列出全部,包括以 . 和 .. 开头的条目
-A 列出所有,但不列出隐含的 . 和 ..
要了解更多信息,只需输入以下命令:
ls --help
我曾遇到过这个问题,我使用以下代码:
ls -dl $PWD/* | grep $PWD
这总能为我提供需要的列表,但你的情况可能有所不同。
这对我有用:
ls -rt -d -1 $PWD/{*,.*}
你只需要完整路径,为什么不使用为此设计的实用程序
使用 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` # 在目录中
尝试这个命令 -
`readlink -f file.txt`
使用以下命令输出完整路径(也称解析路径):
realpath README.md
在交互模式下,您可以使用 shell 扩展列出所有文件的完整路径:
realpath *
如果您正在编写 bash 脚本,我猜您会为单个文件名定义一个变量。
感谢 VIPIN KUMAR 指向相关的 readlink 命令。
怎么样:
du -a [-b] [--max-depth=N]
这会给你一个文件和目录列表,相对于你当前的位置。你也能得到它们的大小(如果你想要字节为单位的大小,加上 '-b' 参数)。max-depth 参数可能需要调整,让 du 能够深入你的文件结构,或者避免它过多地展开。
你的情况可能会有所不同!
-101-
如果你想要在子目录树中递归列出绝对路径名,可以使用 du 并将其管道送到 cut中。
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
ls命令只会打印出目录中文件的名称。那为什么不这样做呢:print("/mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/" + i)这将会打印出带有文件名的目录。