1

我在脚本中找到了以下代码行。有人可以解释一下下面这行代码是什么意思吗?

基本上,这一行的目的是找到一组要归档的文件。由于我不熟悉 bash 脚本,所以我很难理解这行代码。

_filelist=`cd ${_path}; find . -type f -mtime ${ARCHIVE_DELAY} -name "${_filename}" -not -name "${_ignore_filename}" -not -name "${_ignore_filename2}"`
4

3 回答 3

4

让我们分解一下:

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.

于 2012-05-02T08:54:34.000 回答
4

反引号 (`) 符号将命令的输出分配给变量。
您的脚本将您获得的内容分配给 $_filelist:

  1. 将目录更改为 $_path
  2. 在当前目录 (.) 中查找文件 (-type f) 其中
    1. 名称是 $_filename (我想是一种模式)
    2. 名称不是 $_ignore_filename 或 $_ignore_filename2

我认为您也可以将其更改为find ${_path} ...不使用 cd,但请尝试一下。

于 2012-05-02T08:51:43.680 回答
1
_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 设置为文件,通过一些标准找到:名称、年龄和类型。

于 2012-05-02T08:57:11.447 回答