递归获取Linux文件列表并直接输出到文件

递归获取Linux文件列表并直接输出到文件

我正在 Ubuntu 上为 i2b2 配置软件,并尝试在我下载的 CentOS 映像上找到所有相关文件(路径如下),现在正在 Windows VMWare Player 上运行(免费下载)。我想为 CentOS 和 Ubuntu 递归创建 Linux 文件层次结构的文件,这样我就可以找到每个程序的相关文件(即:JBoss、Java、Apache、Axis、Spring Web Framework、Oracle 等)。 .) 并比较配置。我知道如何在 Windows 中通过获取所有文件的输出来执行类似的操作。

长话短说,我只想转储 Linux 文件系统中从根文件夹开始的所有文件,并将其保存到一个文件中。

下面是 Windows 中执行此操作的命令:

WINDOWS-COMMAND-PROMPT>dir /b /a /s >> files_on_windows.txt

参考:

http://www.i2b2.org> 软件(菜单)> VMWare 映像

答案1

与 Windows 命令的粗略等效将使用find命令:

find / -xdev >files_on_linux.txt

我认为这对您正在做的事情没什么用。在 Linux(CentOS 和 Ubuntu)上,程序以软件包的形式出现;如果您想在 Ubuntu 和 CentOS 上拥有相同的程序,那么您应该获取 CentOS 计算机上的软件包列表,并在 Ubuntu 上安装相同的软件包。在 CentOS 上,您可以使用以下命令列出已安装的软件包(此sed步骤删除了版本号,这与此无关):

rpm -qa | sed 's/-[0-9]*//' | sort >centos_packages.txt

坏消息是 CentOS 和 Ubuntu 使用不同的软件包名称,因此您无法使用此列表并在 Ubuntu 上进行安装。您可以通过忽略任何名为 lib 的包来减少一些工作某物,因为这些将被需要它们的程序自动拉入。有些包名会一一匹配;您可以按如下方式安装它们:

apt-get install $(grep -v '^lib' centos_packages.txt)

您可以使用以下命令查看哪些软件包未安装或具有不同的名称 - 它显示了 的centos_packages.txt输出中存在但不存在的行dpkg --get-selections,其中列出了 Ubuntu 上已安装(或选择安装)的软件包:

dpkg --get-selections | sort | comm -31 - centos_packages.txt

此外,可能存在安装在包装系统下/usr/local/opt并非来自包装系统的程序。您应该能够直接复制文件。你可以这样做:

cd /
sudo tar cjf usr_local.tar.bz2 opt usr/local

将文件复制usr_local.tgz到新的Linux系统并解压:

cd /
sudo tar xjf usr_local.tar.bz2

相关内容