Grep
按名稱或 grep 查找
find . -perm -u+x,g+x,o+x -type f -exec grep -i -l -H -E '#!/bin/bash|#!/bin/sh' {} \; 2>/dev/null 1>/$user_scripts
我的任務是為 4 個文件夾中的 N 個使用者找到任何可能存在的腳本。我將使用 ssh 並執行上面的命令來生成文件列表以供以後使用。找不到文件副檔名為 .sh 和 .bash 且不包含 #!/bin/bash|#!/bin/sh 的某些腳本。
我需要對此進行改進,但我正在努力尋找在我沒有管理員權限的 Solaris 伺服器上工作的東西(沒有特殊的軟體/庫)。如果可能的話,我寧願不需要為每個使用者執行另一個不必要地出現在每個列表中的腳本。
基本上我需要在同一行中使用某種“If(find or grep)”。這可能嗎?
您可以通過 OR-ing
find
命令的不同部分來做到這一點。考慮將您的選擇標準分為三個部分:所有文件的必要要求(權限等),然後是命名文件或具有適當標題的文件。這可以這樣表達
find
(為了便於閱讀,這里拆分為多行):find . -perm -u+x,g+x,o+x -type f \( -name '*.sh' -o -name '*.bash' -o -exec grep -il -E '^#!/bin/bash|^#!/bin/sh' {} \; \) 2>/dev/null >/$user_scripts