x=$(find . -name "*.txt")
echo $x
Run Code Online (Sandbox Code Playgroud)
如果我在Bash shell中运行上面的代码,我得到的是一个包含多个文件名的字符串,用空格分隔,而不是列表.
当然,我可以进一步将它们分开来获取列表,但我确信有更好的方法可以做到这一点.
那么循环find执行命令结果的最佳方法是什么?
假设我有一个目录/dir中,其中有3个符号连接其他目录
/dir/dir11,/dir/dir12和/dir/dir13.我想列出dir包含其中的所有文件dir11,dir12和dir13.
为了更通用,我想列出所有文件,包括目录中符号链接的文件.find .,ls -R等,停止在符号链接,而不导航进入它们进一步列出.
关于Windows批处理文件:有没有办法来列出某个目录下的所有文件(或所有特定类型的)及其子目录,包括相对于当前(或搜索)列表目录的路径?
例如,如果我想要当前目录和子目录中的所有.txt文件及其完整路径,我可以这样做
for /r . %%g in (*.txt) do echo %%g >> C:\temp\test.txt
Run Code Online (Sandbox Code Playgroud)
要么
dir *.txt /b /s >> C:\temp\test.txt
Run Code Online (Sandbox Code Playgroud)
我会得到类似的东西
C:\test\Doc1.txt
C:\test\subdir\Doc2.txt
C:\test\subdir\Doc3.txt
Run Code Online (Sandbox Code Playgroud)
如果我做
for /r . %%g in (*.txt) do echo %%~nxg >> C:\temp\test.txt
Run Code Online (Sandbox Code Playgroud)
我会得到类似的东西
Doc1.txt
Doc2.txt
Doc3.txt
Run Code Online (Sandbox Code Playgroud)
但我真正想要的是:
Doc1.txt
subdir\Doc2.txt
subdir\Doc3.txt
Run Code Online (Sandbox Code Playgroud)
可能吗?
如果我的帖子太混乱了:我基本上希望Linux CLI中的List文件具有相对于当前目录的路径,但仅适用于Windows.
在Free BSD上使用tcsh shell,有没有办法递归列出所有文件和目录,包括文件的所有者,组和相对路径?
ls -alR接近,但它没有显示每个文件前面的相对路径,它显示了分组顶部的路径,即
owner% ls -alR
total 0
drwxr-xr-x 3 owner group 102 Feb 1 10:50 .
drwx------+ 27 owner group 918 Feb 1 10:49 ..
drwxr-xr-x 5 owner group 170 Feb 1 10:50 subfolder
./subfolder:
total 16
drwxr-xr-x 5 owner group 170 Feb 1 10:50 .
drwxr-xr-x 3 owner group 102 Feb 1 10:50 ..
-rw-r--r-- 1 owner group 0 Feb 1 10:50 file1
-rw-r--r-- 1 owner group 0 Feb 1 10:50 file2
Run Code Online (Sandbox Code Playgroud)
我想要的输出如下:
owner group ./relative/path/to/file …Run Code Online (Sandbox Code Playgroud)