我希望使用该ls
命令,结果如下所示:
folder1/file1.doc
folder1/file2.doc
folder1/file44.doc
folder3/file1.doc
folder66/file4.doc
folder999/file.doc
换句话说,我想输出每行的目录名称以及文件名。
cd myfolder
ls * > output.txt
我想我需要在ls
上面的行中添加一些命令。
可以使用吗ls
?
答案1
使用起来更容易find
:
find folder* -type f > output.txt
通配符将扩展到所有文件夹名称,并将以文件夹名称为前缀递归列出文件及其路径。
答案2
正如最近讨论的那样从某个点获取所有文件路径...(在 AU 上),您可以按如下方式进行操作:
shopt -s globstar
ls -d1 **
请注意,ls
选项是小写 D 和数字 1。请注意,ls
除了列出其参数外,这里实际上没有做任何事情;你不妨说
printf "%s\n" **
这些并不局限于一定数量的级别。
如果要包含以点 ( .
) 开头的名称,您还必须shopt -s dotglob
。
答案3
如果您只有一层(即,所有当前子目录中都没有子目录),那么
ls -1 */*
应该可以满足您的要求。请注意,选项是数字 1,而不是字母 ell。
如果你确实有子目录,但不需要这些子目录的文件列表,那么
ls -1d */*
应该可以做你想做的事。同样,选项是 one dee,而不是 ell dee。
如果你的文件布局太复杂,那么你将需要一个find
语句,例如
find . -print | sed s:./::