我当前使用的脚本的一部分是使用“ 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
我遇到错误。我基本上不想在第二次运行此命令时将输出包括回去。
此外,我要做的就是递归地为目录内的每个文件创建一个易于阅读的文档。如果有更好的方法,请告诉我。
答案 0 :(得分:0)
此外,我要做的就是递归地为目录内的每个文件创建一个易于阅读的文档。如果有更好的方法,请告诉我。
要递归列出目录中的每个文件,find
命令将完全按照您的要求进行操作,并根据需要允许对找到的文件进行进一步的编程操作。
find ./ -type f
/etc/
和/usr/share
下的文件,显示其所有者和权限:find /etc /usr/share -type f -printf "%-100p %#m %10u %10g\n"
.git
的子目录:find ./ -type f ! -regex ".*\.git.*" -exec wc -l {} +
$masroot
下搜索,但忽略过去搜索生成的文件,并将结果转储到文件中:find "$masroot" -type f ! -regex ".*/[a-zA-Z]+_[0-9]+_.+_drive_contents.txt" | tee "$masroot/${client}_${jobnum}_${mas}_drive_contents.txt"
(其中某些内容在Mac上可能会稍有不同。有关更多信息,请参见man find
。)