ara*_*ert 41 command-line ls filenames
我需要一个文件(最好是 .list 文件),其中包含目录中每个文件的绝对路径。
示例 dir1:file1.txt file2.txt file3.txt
listOfFiles.list:
/Users/haddad/dir1/file1.txt
/Users/haddad/dir1/file2.txt
/Users/haddad/dir1/file3.txt
Run Code Online (Sandbox Code Playgroud)
我怎样才能在 linux/mac 中完成这个?
And*_*ton 50
您可以使用查找。假设您只需要常规文件,您可以执行以下操作:
find /path/to/dir -type f > listOfFiles.list
Run Code Online (Sandbox Code Playgroud)
如果需要其他类型的文件,可以适当调整类型参数。
Com*_*rse 38
ls -d "$PWD"/* > listOfFiles.list
Run Code Online (Sandbox Code Playgroud)
Sté*_*las 14
请注意,在:
ls -d "$PWD"/* > listOfFiles.list
Run Code Online (Sandbox Code Playgroud)
它是计算目录中(非隐藏)文件列表并将列表传递给ls. ls只需在此处打印该列表,您也可以这样做:
printf '%s\n' "$PWD"/*
Run Code Online (Sandbox Code Playgroud)
请注意,它不包括隐藏文件,包括任何类型的文件(包括目录),如果目录中没有非隐藏文件,则在 POSIX/csh/rc shell 中,您将获得/current/wd/*作为输出。此外,由于换行符与文件路径中的任何字符一样有效,如果您用换行符分隔文件路径,您将无法使用该结果文件可靠地返回到文件列表。
使用zsh外壳,您可以改为:
print -rNC1 $PWD/*(ND-.) > listOfFiles.list
Run Code Online (Sandbox Code Playgroud)
在哪里:
-rC1r在1 Column上打印aw 。-N, 输出记录以 NUL 分隔而不是换行分隔(行),因为 NUL 是唯一在文件名中找不到的字符。N: 如果没有匹配的文件 ( nullglob),则扩展为空D: 包括隐藏文件 ( dotglob)。-.:在符号链接解析 ( )之后仅包含常规文件.( -)。然后,您可以执行以下操作:
xargs -0 rm -f -- < listOfFiles.list
Run Code Online (Sandbox Code Playgroud)
例如,删除这些文件。
您还可以使用:Pglob 限定符中的修饰符来获取从 globrealpath()扩展的文件的等效项(获取排除任何符号链接组件的完整路径):
print -rNC1 -- *(ND-.:P) > listOfFiles.list
Run Code Online (Sandbox Code Playgroud)
另一种方式tree,这里没有提到,它是递归的,与 find 或 ls 不同,你没有任何错误(如:Permission denied,Not a directory),如果你想将文件提供给xargs或其他命令,你还可以获得绝对路径
tree -fai /pathYouWantToList >listOfFiles.list
Run Code Online (Sandbox Code Playgroud)
选项含义:
-a All files are printed. By default tree does not print hidden files (those beginning with a dot
`.'). In no event does tree print the file system constructs `.' (current directory) and `..'
(previous directory).
-i Makes tree not print the indentation lines, useful when used in conjunction with the -f option.
-f Prints the full path prefix for each file.
Run Code Online (Sandbox Code Playgroud)
安装tree:
sudo apt install tree在 Ubuntu/Debian 上
sudo yum install tree在 CentOS/Fedora 上
sudo zypper install tree在 OpenSUSE 上
| 归档时间: |
|
| 查看次数: |
115181 次 |
| 最近记录: |