我在脚本中找到了以下代码行。有人可以解释一下下面这行代码是什么意思吗?
基本上,这一行的目的是找到一组要归档的文件。由于我不熟悉 bash 脚本,所以我很难理解这行代码。
_filelist=`cd ${_path}; find . -type f -mtime ${ARCHIVE_DELAY} -name "${_filename}" -not -name "${_ignore_filename}" -not -name "${_ignore_filename2}"`
让我们分解一下:
cd ${_path}
: 更改存储在${_path}
变量中的目录
find
用于根据以下条件查找文件:
.
: 查看当前目录并递归遍历所有子目录 -type f
:仅查找常规文件(不是目录) -mtime ${ARCHIVE_DELAY}
${ARCHIVE_DELAY}*24
: 查找几小时前最后修改的文件
-name "${_filename}"
: 查找名称匹配的文件${_filename}
-not -name "${_ignore_filename}"
: 不查找名称匹配的文件${_ignore_filename}
-not -name "${_ignore_filename2}"
: 不查找名称匹配的文件${_ignore_filename2}
找到的所有文件都存储在一个名为_filelist
.
反引号 (`) 符号将命令的输出分配给变量。
您的脚本将您获得的内容分配给 $_filelist:
我认为您也可以将其更改为find ${_path} ...
不使用 cd,但请尝试一下。
_filelist=`somecode`
使变量 _filelist 包含命令 somecode 的输出。
在这种情况下,Somecode 主要是一个查找命令,它递归地搜索文件。
find . -type f -mtime ${ARCHIVE_DELAY} -name "${_filename}" -not -name "${_ignore_filename}" -not -name "${_ignore_filename2}"
find .
搜索当前目录,但这只是在更改为 _path 之前。
-type f
仅在普通文件中搜索(不是目录、套接字等)
-mtime
指定该文件的修改时间,与 ${ARCHIVE_DELAY} 相同
-name explains
本身,必须是“${_filename}”
-not name
我猜也解释了自己。
所以整个部分将变量 filelist 设置为文件,通过一些标准找到:名称、年龄和类型。