Pra*_*DTI 37 linux bash shell lua command-line
许多人会发现这是重复的问题但我在询问这个主题之前已经完成了所有问题,但没有一个对我有用.
我想使用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
Run Code Online (Sandbox Code Playgroud)
这将打印出根难治和辅助训练中的所有文件.
输出:
0020111118223425.lvf
2012
2012 (2009).mp4
3 Idiots
Aashiqui 2
Agneepath.mkv
Avatar (2009)
Captain Phillips (2013)
Cocktail
Run Code Online (Sandbox Code Playgroud)
我想输出像:
/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
Run Code Online (Sandbox Code Playgroud)
编辑: 我已经使用了这一切,但它不能在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
Run Code Online (Sandbox Code Playgroud)
没有找到"/mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7"中的文件,它打印机器根目录文件.
Tot*_*oro 49
您可以使用
ls -lrt -d -1 $PWD/{*,.*}
Run Code Online (Sandbox Code Playgroud)
它还会捕获隐藏文件.
小智 38
你可以试试这个:
ls -d $PWD/*
Run Code Online (Sandbox Code Playgroud)
sdk*_*kks 18
用于以完整路径列出所有内容,仅在当前目录中列出
find $PWD -maxdepth 1
Run Code Online (Sandbox Code Playgroud)
与上面相同但仅匹配特定扩展名,不区分大小写(在本例中为.sh文件)
find $PWD -maxdepth 1 -iregex '.+\.sh'
Run Code Online (Sandbox Code Playgroud)
$ PWD是当前目录,可以替换为任何目录
mydir="/etc/sudoers.d/" ; find $mydir -maxdepth 1
Run Code Online (Sandbox Code Playgroud)
maxdepth阻止查找进入子目录,例如,您可以将其设置为"2"以列出子项中的项目.如果您需要递归,只需将其删除即可.
要将其限制为仅文件,可以使用-type f选项.
find $PWD -maxdepth 1 -type f
Run Code Online (Sandbox Code Playgroud)
您可以轻松地使用以下内容仅列出文件:
ls -d -1 $PWD/*.*
Run Code Online (Sandbox Code Playgroud)
以下列出目录:
ls -d -1 $PWD/**
Run Code Online (Sandbox Code Playgroud)
以下列出所有内容(文件/目录):
ls -d -1 $PWD/**/*
Run Code Online (Sandbox Code Playgroud)
更多有用的选项:
-d列出目录而不是它们的内容
-R递归
-1每行列出一个文件
-l使用长列表格式
-a列出所有包括以开头的条目。和..
-A全部列出,但未列出。和..
有关更多信息,只需键入以下内容
ls --help
Run Code Online (Sandbox Code Playgroud)
使用以下命令打印完整路径(也称为解析路径):
realpath README.md
Run Code Online (Sandbox Code Playgroud)
在交互模式下,您可以使用 shell 扩展列出目录中的所有文件及其完整路径:
realpath *
Run Code Online (Sandbox Code Playgroud)
如果您正在编写 bash 脚本,我想您将有一个用于各个文件名的变量。
感谢 VIPIN KUMAR 指出相关readlink命令。