我正在尝试做“单行脚本”或非常小的 bash 脚本。
它必须找到文件(例如./xxx/one.php
),如果该文件存在,则编辑(使用printf
或echo
)在同一目录中的其他文件(例如./xxx/test.php
)。
现在我做了第二部分 - 编辑现有文件,但我不知道如何或在哪里输入“if”。
其实我有类似的东西
for file in `find . -name "test*.php"` ; do
(printf "It's me, on first line \n and me on second line\n" && cat $file) > "$file".bak && mv "$file".bak "$file"
done
应该是这样的吧?
if [[ `find . -name "one*.php` ]]; do
for file in `find . -name "test*.php"` ; do
(printf "It's me, on first line \n and me on second line\n" && cat $file) > "$file".bak && mv "$file".bak "$file"
done
done
-execdir
选项在这里find
很方便:-execdir
是-execdir
将在找到的文件所在的目录中运行给定的命令,因此test.php
“旁边”的文件将在那里进行操作。在这里,我们bash
在该目录中启动并在那里运行一个小脚本来进行您想要的操作。无需复杂的路径操作或重新查找文件。上面我检查了文件是否存在,但如果它总是在那里(或者你想无条件地创建它)你可以取if
出来。-execdir
是一个 GNU find 扩展,不在 POSIX 中,但你很可能已经给了你的标签。一个警告是,出于安全原因,您的PATH
环境变量不能包含.
或任何其他相对路径(包括空元素),因此如果您的环境变量包含,您需要先重置它:PATH=... find ...
.