我想创建一个目录中所有文件的列表,而不列出该目录中的任何子目录,并将该列表打印到一个新文件中。
ls -d * > filelist
将创建当前目录中所有文件的列表,但它还会列出当前目录中的子目录。我find
使用-maxdepth 1
选项尝试了命令-但是,输出格式是一个问题,因为find还会打印出路径以及文件名。
如果有人可以告诉我,也许可以使用另一个命令或选项来生成目录中文件的输出列表,而不是子目录名称或其内容的输出列表,我将不胜感激。
我想创建一个目录中所有文件的列表,而不列出该目录中的任何子目录,并将该列表打印到一个新文件中。
ls -d * > filelist
将创建当前目录中所有文件的列表,但它还会列出当前目录中的子目录。我find
使用-maxdepth 1
选项尝试了命令-但是,输出格式是一个问题,因为find还会打印出路径以及文件名。
如果有人可以告诉我,也许可以使用另一个命令或选项来生成目录中文件的输出列表,而不是子目录名称或其内容的输出列表,我将不胜感激。
Answers:
基于查找的解决方案:
find . -maxdepth 1 -type f -printf '%f\n'
基于Bash的解决方案:
for f in *; do [[ -d "$f" ]] || echo "$f"; done
## or, if you want coloured output:
for f in *; do [[ -d "$f" ]] || ls -- "$f"; done
基于bash的解决方案将为您提供目录以外的所有内容。它将包括诸如命名管道之类的东西(您可能需要这样做)。如果您只想要file,请使用find
命令或以下命令之一:
for f in *; do [[ -f "$f" ]] && echo "$f"; done
## or, if you want coloured output:
for f in *; do [[ -f "$f" ]] && ls -- "$f"; done
如果您打算定期使用此功能,则当然可以将其放入别名中~/.bashrc
:
alias lsfiles='for f in *; do [[ -f "$f" ]] && ls -- "$f"; done'
既然您在注释中指出您实际上是在OSX而不是Ubuntu上,那么我建议您下次将问题直接发送给Apple或更通用的Unix&Linux Stack Exchange网站。
仅列出文件名:
1. ls -p | grep -v /(无隐藏文件) 2. ls -l | grep ^-| tr -s''| 剪切-d''-f 9(无隐藏文件) a)ls -pa | grep -v /(带有隐藏文件) b)ls -la | grep ^-| tr -s''| 剪切-d''-f(带有隐藏文件)
仅列出目录:
1. ls -p | grep /(无隐藏) 2. ls -l | grep ^ d | tr -s''| 切-d''-f 9(无隐藏) a)ls -pa | grep /(隐藏) b)ls -l | grep ^ d | tr -s''| 切-d''-f 9(隐藏)
grep -v -e ^ $用于从结果中删除空白行。
更多详细信息:
ls -p标志将'/'放在目录名的末尾,-R标志用于递归搜索,-l用于列出信息,-a用于列出所有(包括隐藏文件)信息,grep -v标志用于结果反转,-e标志用于正则表达式匹配。
ls -1 --file-type | grep -v '/' | sed s/@$// > filelist
另一个可能的选择是
ls -F | grep -v '/' | sed /[@*]$// > filelist
将--file-type
在文件夹(也以符号链接。到底@结束看跌期权A / The grep -v '/'
删除子目录(因为他们现在用“/”)。该sed s/@$//
删除该@。-1打印每行一个文件这样grep -v才能正常工作。
-1
与grep无关紧要,您不需要它;如果要包括隐藏文件使用的-a
选项上ls
ls -F | grep -v '/' | sed s/[@*]$// > filelist
ls -d *
只列出了当前文件夹中的文件和文件夹,不包括这里隐藏的文件/文件夹;