Find
將 chmod 和 chown 命令動態應用於 find 命令的輸出
我在根目錄中的許多目錄中有一個文件。我需要對所有文件應用 chmod 640 和 chown 命令。我有兩個命令,一個是查找文件路徑,另一個是應用 chmod 和 chown。如何將 chmod 和 chown 應用於 find 命令的輸出
例子:
find . -type f -name 'myawesomeapp.jar' chmod 640 /path/to/file/myawesomeapp.jar chown root:webapps /path/to/file/myawesomeapp.jar chmod 640 /path/to/another/file/myawesomeapp.jar chown root:webapps /path/to/another/file/myawesomeapp.jar
使用 find 的 -exec 標誌對結果執行命令:
find . -type f -name 'myawesomeapp.jar' -exec chmod 640 {} \+ -exec chown root:webapps {} \+
在您的情況下,您想使用 exec 的第二個變體:
-exec command ; Execute command; true if 0 status is returned. All following argu‐ ments to find are taken to be arguments to the command until an argument consisting of `;' is encountered. The string `{}' is replaced by the current file name being processed everywhere it occurs in the arguments to the command, not just in arguments where it is alone, as in some versions of find. Both of these construc‐ tions might need to be escaped (with a `\') or quoted to protect them from expansion by the shell. See the EXAMPLES section for examples of the use of the -exec option. The specified command is run once for each matched file. The command is executed in the starting directory. There are unavoidable security problems sur‐ rounding use of the -exec action; you should use the -execdir option instead. -exec command {} + This variant of the -exec action runs the specified command on the selected files, but the command line is built by appending each selected file name at the end; the total number of invocations of the command will be much less than the number of matched files. The command line is built in much the same way that xargs builds its command lines. Only one instance of `{}' is allowed within the com‐ mand. The command is executed in the starting directory. If find encounters an error, this can sometimes cause an immediate exit, so some pending commands may not be run at all. This variant of -exec always returns true.
{}
是將要傳遞的文件名的替換標記find
。