这个bash脚本意味着什么

时间:2012-05-02 08:45:49

标签: bash shell

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

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

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

3 个答案:

答案 0 :(得分:4)

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

  1. 将目录更改为$ _path
  2. 查找当前目录(。)文件(-type f)所在位置
    1. 名称是$ _filename(模式,我猜)
    2. 名称不是$ _ignore_filename或$ _ignore_filename2
  3. 我认为你可以在没有CD的情况下将其更改为find ${_path} ...,但请尝试一下。

答案 1 :(得分: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的变量中。

答案 2 :(得分:1)

_filelist=`somecode`

使变量_filelist包含命令somecode的输出

在这种情况下,Somecode主要是一个find命令,它会递归搜索文件。

find . -type f -mtime ${ARCHIVE_DELAY} -name "${_filename}" -not -name "${_ignore_filename}" -not -name "${_ignore_filename2}"

find .

搜索当前目录,但这只是在更改为_path之前。

-type f

仅搜索普通文件(不是dirs,socket,...)

-mtime

指定文件的修改时间,与$ {ARCHIVE_DELAY}

相同
-name explains

本身,必须是“$ {_ filename}”

-not name
我猜也是解释自己的。

所以整个部分将变量filelist设置为文件,由一些标准找到:名称,年龄和类型。