2

早上好 !

我相信这是一个简单的,但我仍然是菜鸟:)

我正在尝试查找具有特定名称的所有文件夹。我可以用命令做到这一点

find /path/to/look/in/ -type d | grep .texturedata

输出给了我很多这样的文件夹:

/path/to/look/in/.texturedata/v037/animBMP

但我希望它停在 .texturedata :

/path/to/look/in/.texturedata/

我有数百条这样的路径,并希望通过将 grep 的输出输入到chmod 000

曾经给我一个带有参数的命令-dpe,但我不知道它的作用,互联网无法帮助我确定它的用法

非常感谢您的帮助!

4

3 回答 3

1

您可以-quit在 gnu find 中使用选项-exec

find /path/to/look/in/ -type d -name ".texturedata" -exec chmod 000 '{}' \; -quit
于 2013-11-13T15:51:23.217 回答
1

我正在尝试查找具有特定名称的所有文件夹。我可以使用命令 find /path/to/look/in/ -type d | 来做到这一点。grep .texturedata

无需grep输出find来查找特定的目录名称。-name选项find将做同样的工作。

find /path/to/look/in/ -type d -name '.texturedata'

我希望它停在 .texturedata

-prune选项非常适合这个要求

find /path/to/look/in/ -type d -name '.texturedata' -prune

我有数百条这样的路径,并希望通过将 grep 的输出传递到 chmod 000 来锁定它们

尝试使用findwith-exec选项

find /path/to/look/in/ -type d -name '.texturedata' -exec chmod 000 {} \; -prune

更有效的方法是find使用管道输出xargs

find /path/to/look/in/ -type d -name '.texturedata' -prune -print0 | xargs -0 chmod 000

测试

$ tree -pa
.
|-- [drwxrwxrwx]  .texturedata
|   `-- [drwxrwxrwx]  .texturedata
|-- [drwxrwxrwx]  dir1
|   |-- [drwxrwxrwx]  .texturedata
|   |   `-- [-rwxrwxrwx]  file2
|   `-- [drwxrwxrwx]  dir11
|       `-- [-rwxrwxrwx]  file111
|-- [drwxrwxrwx]  dir2
|   `-- [drwxrwxrwx]  .texturedata
|       `-- [-rwxrwxrwx]  file3
|-- [drwxrwxrwx]  dir3
|   `-- [-rwxrwxrwx]  file4
`-- [-rwxrwxrwx]  file1

8 directories, 5 files
$ find . -type d -name '.texturedata' -prune -print0 | xargs -0 chmod 000
$ tree -pa
.
|-- [d---------]  .texturedata [error opening dir]
|-- [drwxrwxrwx]  dir1
|   |-- [d---------]  .texturedata [error opening dir]
|   `-- [drwxrwxrwx]  dir11
|       `-- [-rwxrwxrwx]  file111
|-- [drwxrwxrwx]  dir2
|   `-- [d---------]  .texturedata [error opening dir]
|-- [drwxrwxrwx]  dir3
|   `-- [-rwxrwxrwx]  file4
`-- [-rwxrwxrwx]  file1

7 directories, 3 files
于 2013-11-14T05:24:52.610 回答
1

尝试

find /path/to/look/in/ -type d -name .texturedata -print0 | xargs -0 chmod 000

或者

find /path/to/look/in/ -type d -name .texturedata -exec chmod 000 {} \;

无需使用grep. 以上只会更改 的权限.texturedata,而不是其子级,前提是其中没有目录.texturedata也被命名为.texturedata。它会发现.texturedata里面的一切/path/to/look/in

于 2013-11-13T15:45:56.260 回答