![每个目录的文件在一行中](https://linux22.com/image/81373/%E6%AF%8F%E4%B8%AA%E7%9B%AE%E5%BD%95%E7%9A%84%E6%96%87%E4%BB%B6%E5%9C%A8%E4%B8%80%E8%A1%8C%E4%B8%AD.png)
我有以下目录:
Sample1
Sample2
每个它都包含多个子文件夹,例如
Sample1/R1/
Sample1/R2/
Sample1/R3/
Sample2/R1/
Sample2/R2/
Sample2/R3/
其中进一步包含文件:
Sample1/R1/file1
Sample1/R2/file1
Sample1/R3/file1
Sample2/R1/file1
Sample2/R2/file1
Sample2/R3/file1
我想要一个像这样的列表:
Sample1/R1/file1 Sample1/R2/file1 Sample1/R3/file1
Sample2/R1/file1 Sample2/R2/file1 Sample2/R3/file1
我尝试过“ls;”、“查找”但没有运气。
请问有人可以帮忙吗?
可以提前致谢。
答案1
find . -type f | awk -F / '{a[$2]=a[$2] " " $0}; END {for(b in a){print a[b]}}'
答案2
和zsh
:
for d (Sample*) print -r $d/*/*
或者打印所有非目录文件:
for d (Sample*) print -r $d/**/*(^/)
(请注意,如果文件名包含换行符,则该文件名不会在一行上)。
或者使用任何类似 Bourne 的 shell:
for d in Sample*; do
find "$d" ! -type d | paste -sd ' ' -
done