Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 递归地创建目录中每个文件的文本文档_Bash_Terminal_Ls - Fatal编程技术网

Bash 递归地创建目录中每个文件的文本文档

Bash 递归地创建目录中每个文件的文本文档,bash,terminal,ls,Bash,Terminal,Ls,我当前使用的脚本的一部分是使用“ls-FCRlhLoprt”将根目录中的每个文件递归地列出到文本文档中。问题是,每次我运行脚本时,ls都会在其输出中包含该文档,因此每次运行时文本文档都会增长。我相信我可以使用-I或-ignore,但是当ls使用一些变量时,我如何使用它呢?我不断地犯错误: ls "$lsopt" "$masroot"/ >> "$masroot"/"$client"_"$jobnum"_"$mas"_drive_contents.txt . #this works

我当前使用的脚本的一部分是使用“ls-FCRlhLoprt”将根目录中的每个文件递归地列出到文本文档中。问题是,每次我运行脚本时,ls都会在其输出中包含该文档,因此每次运行时文本文档都会增长。我相信我可以使用-I或-ignore,但是当ls使用一些变量时,我如何使用它呢?我不断地犯错误:

ls "$lsopt" "$masroot"/ >> "$masroot"/"$client"_"$jobnum"_"$mas"_drive_contents.txt . #this works
如果我尝试:

ls -FCRlhLoprt --ignore=""$masroot"/"$client"_"$jobnum"_"$mas"_drive_contents.txt"" "$masroot"/ >> "$masroot"/"$client"_"$jobnum"_"$mas"_drive_contents.txt #this does not work
我会犯错误。我基本上不想在第二次运行此命令时将输出包含回

另外,我所要做的就是递归地为目录中的每个文件创建一个易于阅读的文档。如果有更好的办法,请告诉我

另外,我所要做的就是递归地为目录中的每个文件创建一个易于阅读的文档。如果有更好的办法,请告诉我

要递归地列出目录中的每个文件,
find
命令完全满足您的需要,并允许您根据需要对找到的文件进行进一步的编程操作

示例: 要递归列出当前目录下的每个文件,请执行以下操作: 要在
/etc/
/usr/share
下列出文件,显示其所有者和权限: 递归显示所有文件的行数,但忽略
.git
的子目录: 要在
$masroot
下搜索,但忽略过去搜索生成的文件,并将结果转储到文件中,请执行以下操作:
(其中一些在Mac上可能略有不同。有关更多信息,请参阅
man find

--ignore
仅适用于GNU/Linux。您是否在Linux以外的其他系统上运行此命令?另外,“I get errors.”也没有任何帮助。什么错误?“如果有更好的方法,请告诉我。”--您可以尝试使用为此类应用程序设计的
find
。将结果文件写入起始目录的父目录。重定向操作符在
ls
命令启动之前创建文件。我在macOS上-忘了提到这一点。
find ./ -type f
find /etc /usr/share -type f -printf "%-100p %#m %10u %10g\n"
find ./ -type f ! -regex ".*\.git.*" -exec wc -l {} +
find "$masroot" -type f ! -regex ".*/[a-zA-Z]+_[0-9]+_.+_drive_contents.txt" | tee "$masroot/${client}_${jobnum}_${mas}_drive_contents.txt"