如何在FIND命令结果中排除几个文件夹级别 - unix

时间:2013-02-27 06:25:51

标签: linux bash shell unix

以下是文件夹结构 - home / ABCD / test1 / example1 / sample1 / textfile.txt

如果我执行查找命令,如

find /home/ABCD/ -type f -print

我收到以下输出

/home/ABCD/test1/example1/sample1/textfile.txt

注意:我正在执行来自ABCD文件夹的find命令,在结果中我要排除/ home / ABCD /文件夹我只想要 / test1 / example1 / sample1 / testfile .txt 作为结果

我怎样才能做到这一点?

4 个答案:

答案 0 :(得分:1)

由于您正在执行来自/home/ABCD/的查找,请执行以下操作:

find * -type f -print

或者,如果您要在test1中查找文件,请执行以下操作:

find test1 -type f -print

同样使用-maxdepth N,您可以限制查找

中的递归

如果您只想查找名为textfile.txt的文件

find test1 -type f -name 'textfile.txt' -print 

如果要打印前导斜杠

find . -type f -printf '/%p\n'

有关详情,请查看here

注意:如果在变量中包含上述字符串,则可以像这样修剪它:

string="/home/ABCD/test1/example1/sample1/textfile.txt"
echo "${string#/home/ABCD}"

字符串操作的更多示例here

答案 1 :(得分:1)

只需使用.作为起始目录

find . -type f -print

给出

  

./ TEST1 /例1 / SAMPLE1 / TextFile.txt的

如果你真的想要一个前导斜杠,请使用-printf作为输出

find . -type f -printf '/%P\n'

答案 2 :(得分:0)

您可以使用mindepth参数开始查看当前目录下的一个级别

find /home/ABCD/ -mindepth 1 -type f -print

答案 3 :(得分:0)

这应该使用。

替换当前的工作目录名称
find . -type f | perl -pne "s#$PWD#.#"

所以你会得到如下结果: ./test1/example1/sample1/textfile.txt

如果您不想使用前面的./,请改用此命令:

find . -type f | perl -pne "s#$PWD/##"