在 Linux 上的多个目录中执行命令
介绍
作为 Linux 用户,在多个目录中运行相同的命令是很常见的。例如,您可能想要搜索具有特定扩展名的所有文件或在多个目录中运行 shell 脚本。如果手动完成此任务可能会非常耗时,并且随着目录数量的增加会变得更加乏味。幸运的是,Linux 提供了多种方法来有效地跨多个目录运行命令。在本文中,我们将了解其中一些方法,并向您展示如何在 Linux 中的多个目录上运行命令。
使用Find命令执行命令
find 命令是 Linux 中最强大的命令之一。它允许您根据不同的条件(如名称、大小、日期等)搜索文件和目录。您还可以对 find 命令找到的文件和目录执行命令。要在多个目录中运行命令,可以使用带有 ‘-exec’ 选项的 find 命令。 “-exec”选项允许您对搜索命令找到的每个文件或目录运行命令。这是一个例子 -
$ find /path/to/directories -type f -name "*.txt" -exec cat {} \;
上面的命令将搜索位于“/path/to/directories”目录中的所有“.txt”文件,并对每个文件运行 cat 命令。 ‘{}’符号代表搜索命令找到的文件,;该符号表示要执行的命令的结束。
This is the contents of file1.txt
This is the contents of file2.txt
This is the contents of file3.txt
...
使用 xargs 命令
xargs 命令是另一个用于跨多个目录运行命令的有用工具。允许您在标准输入上执行命令,该命令可以由另一个命令生成。要在多个目录中运行命令,可以使用 ls 命令列出每个目录中的文件,然后将输出通过管道传输到 xargs 命令。这是一个例子 -
$ ls /path/to/directories | xargs cat
上面的命令将列出位于 /path/to/directories 中的目录的内容,并且 xargs 命令将捕获列出的每个文件。
This is the contents of file1.txt
This is the contents of file2.txt
This is the contents of file3.txt
...
使用 Shell 脚本
shell脚本是用shell语言编写的程序,例如bash。它允许您使用单个命令自动执行任务并执行复杂的操作。要在多个目录中运行命令,可以编写一个 shell 脚本来遍历目录并执行所需的命令。这是一个例子 -
#!/bin/bash
for dir in /path/to/directories/*/;
do
cd "$dir"
cat *
cd -
done
上面的脚本将遍历位于“/path/to/directories”中的所有目录,并对每个目录中的每个文件运行 cat 命令。 cd命令将当前目录更改为正在处理的目录,“cd - ”命令执行命令后将当前目录更改为原始目录。
This is the contents of file1.txt
This is the contents of file2.txt
This is the contents of file3.txt
...
如果手动执行,在 Linux 中的多个目录上运行命令可能需要很长时间。然而,有几种有效的方法可以做到这一点,例如 find 命令、xargs 命令和 shell 脚本。在本文中,我们讨论了每种方法,并向您展示如何在 Linux 中的多个目录上运行命令。无论您是初学者还是高级用户,这些方法都将节省您的时间并使您的工作变得更轻松。 find、xargs、 和 shell 脚本命令可以通过多种方式使用,并且您可以自定义它们以满足您的特定需求。
结论
总之,当您知道正确的工具时,在 Linux 中的多个目录上运行命令是一项简单的任务。使用 find 命令、xargs 命令或 shell 脚本,您可以节省时间并简化工作。无论您是搜索文件、运行 shell 脚本还是执行其他任务,这些方法都将帮助您高效地实现目标。