OnWorks Linux 和 Windows 在线工作站

商标

工作站免费在线托管

<上一页 | 内容 | 下一页>

重返操场

是时候放了 发现 一些(几乎)实际用途。 我们将创建一个游乐场并尝试我们学到的一些东西。


首先,让我们创建一个包含许多子目录和文件的游乐场:



[我@linuxbox ~]$ mkdir -p 游乐场/目录-{001..100}

[我@linuxbox ~]$ 触摸操场/dir-{001..100}/file-{A..Z}

[我@linuxbox ~]$ mkdir -p 游乐场/目录-{001..100}

[我@linuxbox ~]$ 触摸操场/dir-{001..100}/file-{A..Z}


惊叹于命令行的强大功能! 通过这两行,我们创建了一个包含 100 个子目录的游乐场目录,每个子目录包含 26 个空文件。 用 GUI 试试吧!

我们用来完成这个魔法的方法涉及一个熟悉的命令(MKDIR),一个奇异的 shell 扩展(大括号)和一个新命令, 触摸。 通过结合 MKDIR -p 选项(导致 MKDIR 要创建指定路径的父目录),使用大括号扩展,我们能够创建 100 个子目录。

这个 触摸 命令通常用于设置或更新文件的访问、更改和修改次数。 但是,如果文件名参数是不存在的文件,则会创建一个空文件。

在我们的 Playground 中,我们创建了一个名为的文件的 100 个实例 文件-A. 让我们找到它们:


[我@linuxbox ~]$ find playground -type f -name 'file-A'

[我@linuxbox ~]$ find playground -type f -name 'file-A'


注意,不像 ls, 发现 不会按排序顺序生成结果。 其顺序由存储设备的布局决定。 我们可以通过这种方式确认我们实际上有 100 个文件实例:



[我@linuxbox ~]$ find playground -type f -name 'file-A' | wc -l

100

[我@linuxbox ~]$ find playground -type f -name 'file-A' | wc -l

100


接下来,让我们看看根据文件的修改时间查找文件。 这在按时间顺序创建备份或组织文件时会很有帮助。 为此,我们将首先创建一个参考文件,用于比较修改时间:



[我@linuxbox ~]$ 触摸操场/时间戳

[我@linuxbox ~]$ 触摸操场/时间戳


这将创建一个名为的空文件 时间戳 并将其修改时间设置为当前时间。 我们可以使用另一个方便的命令来验证这一点, 统计,这是一种加强版 ls。 该 统计 命令显示系统理解的所有内容


关于文件及其属性:



[我@linuxbox ~]$ 统计游乐场/时间戳

文件:`游乐场/时间戳'

大小:0 块:0 IO 块:4096 常规空文件 设备:803h/2051d Inode:14265061 链接:1

访问:(0644/-rw-r--r--) Uid:( 1001/我) Gid:( 1001/我) 访问:2016-10-08 15:15:39.000000000 -0400

Modify: 2016-10-08 15:15:39.000000000 -0400

Change: 2016-10-08 15:15:39.000000000 -0400

[我@linuxbox ~]$ 统计游乐场/时间戳

文件:`游乐场/时间戳'

大小:0 块:0 IO 块:4096 常规空文件 设备:803h/2051d Inode:14265061 链接:1

访问:(0644/-rw-r--r--) Uid:( 1001/我) Gid:( 1001/我) 访问:2016-10-08 15:15:39.000000000 -0400

Modify: 2016-10-08 15:15:39.000000000 -0400

Change: 2016-10-08 15:15:39.000000000 -0400


如果我们 触摸 再次检查文件,然后用 统计,我们将看到文件的时间已更新。:



[我@linuxbox ~]$ 触摸操场/时间戳

[我@linuxbox ~]$ 统计游乐场/时间戳

文件:`游乐场/时间戳'

大小:0 块:0 IO 块:4096 常规空文件 设备:803h/2051d Inode:14265061 链接:1

访问:(0644/-rw-r--r--) Uid:( 1001/我) Gid:( 1001/我) 访问:2016-10-08 15:23:33.000000000 -0400

Modify: 2016-10-08 15:23:33.000000000 -0400

Change: 2016-10-08 15:23:33.000000000 -0400

[我@linuxbox ~]$ 触摸操场/时间戳

[我@linuxbox ~]$ 统计游乐场/时间戳

文件:`游乐场/时间戳'

大小:0 块:0 IO 块:4096 常规空文件 设备:803h/2051d Inode:14265061 链接:1

访问:(0644/-rw-r--r--) Uid:( 1001/我) Gid:( 1001/我) 访问:2016-10-08 15:23:33.000000000 -0400

Modify: 2016-10-08 15:23:33.000000000 -0400

Change: 2016-10-08 15:23:33.000000000 -0400


接下来我们用 发现 更新我们的一些 Playground 文件:


[我@linuxbox ~]$ find playground -type f -name 'file-B' -exec touch '{}' ';'

[我@linuxbox ~]$ find playground -type f -name 'file-B' -exec touch '{}' ';'


这会更新 Playground 中名为的所有文件 文件-B. 接下来我们将使用 发现 通过将所有文件与参考文件进行比较来识别更新的文件 时间戳:


[我@linuxbox ~]$ 找到 playground -type f -newer playground/timestamp

[我@linuxbox ~]$ 找到 playground -type f -newer playground/timestamp


结果包含所有 100 个实例 文件-B. 由于我们执行了一个 触摸 在 Playground 中名为的所有文件上 文件-B 我们更新后 时间戳,它们现在比 时间戳 因此可以用 -较新 测试。

最后,让我们回到我们之前执行的错误权限测试并将其应用于


[我@linuxbox ~]$ 找到游乐场 \( -type f -not -perm 0600 \) - 或 \(

-type d -not -perm 0700 \)

[我@linuxbox ~]$ 找到游乐场 \( -type f -not -perm 0600 \) - 或 \(

-type d -not -perm 0700 \)

此命令列出所有 100 个目录和 2600 个文件 操场 (以及 时间戳 操场 本身,总共 2702),因为它们都不符合我们对“良好权限”的定义。 凭借我们对运算符和操作的了解,我们可以向此命令添加操作,以将新权限应用于我们的操场中的文件和目录:



[我@linuxbox ~]$ 找到游乐场 \( -type f -not -perm 0600 -exec chmod 0600 '{}' ';' \) -or \( -type d -not -perm 0700 -exec chmod 0700 '{}' ';' \)

[我@linuxbox ~]$ 找到游乐场 \( -type f -not -perm 0600 -exec chmod 0600 '{}' ';' \) -or \( -type d -not -perm 0700 -exec chmod 0700 '{}' ';' \)


在日常基础上,我们可能会发现发出两个命令更容易,一个用于目录,一个用于文件,而不是这个大型复合命令,但很高兴知道我们可以这样做道路。 这里的重点是了解如何将操作符和动作一起使用来执行有用的任务。


OnWorks 的顶级操作系统云计算: