Linux 在目录中搜索文件

Linux 在目录中搜索文件,linux,csh,Linux,Csh,大家好,我正在尝试编写一个脚本,该脚本递归搜索父目录中的目录,并计算子目录中有多少文本文件(.txt)。我还需要将文件相对路径输出到父目录 假设我有一个名为Files的文件夹 此文件夹中可能有: Files/childFolder1/child1.txt Files/childFolder1/child2.txt Files/childFolder1/child3.txt Files/childFolder2/child4.txt Files/childFolder2/child5.txt Fi

大家好,我正在尝试编写一个脚本,该脚本递归搜索父目录中的目录,并计算子目录中有多少文本文件(.txt)。我还需要将文件相对路径输出到父目录

假设我有一个名为Files的文件夹

此文件夹中可能有:

Files/childFolder1/child1.txt
Files/childFolder1/child2.txt
Files/childFolder1/child3.txt
Files/childFolder2/child4.txt
Files/childFolder2/child5.txt
Files/child6.txt
因此,输出将是

The files are:

/childFolder1/child1.txt
/childFolder1/child2.txt
/childFolder1/child3.txt
/childFolder2/child4.txt
/childFolder2/child5.txt
/child6.txt

There are 6 files in the 'Files' folder
到目前为止,我有一个脚本如下:

#! /bin/csh

find $argv[1] -iname '*.txt'

set wc=`find $argv[1] -iname '*.txt' | wc -l`

echo "Number of files under" $argv[1] "is" $wc
我不知道如何进行输出,所以它只显示相对于目录的文件路径。目前,我的输出如下:

/home/Alice/Documents/Files/childFolder1/child1.txt
/home/Alice/Documents/Files/childFolder1/child2.txt
/home/Alice/Documents/Files/childFolder1/child3.txt
/home/Alice/Documents/Files/childFolder2/child4.txt
/home/Alice/Documents/Files/childFolder2/child5.txt
/home/Alice/Documents/Files/child6.txt
Number of files under /home/Alice/Documents/Files is 6

这是不可取的。我还担心如何设置
$wc
变量。如果目录列表很大,那么这将获得巨大的开销。

cd$argv[1]
首先使用
查找-在名称“*.txt”
中,首先相对于目录生成结果,然后使用
查找-iname'*.txt'
要使结果与目录相关,请尝试

find $argv[1] -iname '*.txt' -printf "%P \n"
这将提供所需的输出:)

海登试试看

find $argv[1] -iname '*.txt' -printf "%P \n"
这将提供所需的输出:)


Hayden

此外,如果您不想执行两次find,您可以:

  • 将其输出存储在变量中,尽管我不知道变量在csh中的大小是否受到限制
  • 将其输出存储在临时文件中,但纯粹主义者不喜欢临时文件
  • 在迭代find结果的while循环中自己计算行数
请注意,如果改用支持进程替换的bash,则可以复制find的输出,并使用tee将其传递给多个命令:


此外,如果您不想执行两次find,您可以:

  • 将其输出存储在变量中,尽管我不知道变量在csh中的大小是否受到限制
  • 将其输出存储在临时文件中,但纯粹主义者不喜欢临时文件
  • 在迭代find结果的while循环中自己计算行数
请注意,如果改用支持进程替换的bash,则可以复制find的输出,并使用tee将其传递给多个命令: