当前位置:首页 > 文章 > 系统OS > 正文内容

Ubuntu初学教程,基本的命令(三)之移动和处理文件

myblog4个月前 (06-24)系统OS141

让我们首先使用mv(Move)命令将我们的组合.txt文件放到dir1目录中:

mv combined.txt dir1

您可以通过使用ls查看工作目录,然后使用cd dir1进入dir1,使用ls查看它在那里,然后使用cd。若要再次将工作目录移回,请执行以下操作。或者,您可以通过将路径直接传递到ls命令以直接获得所需的确认来节省大量输入:

ls dir1

现在假设事实证明该文件根本不应该位于dir1中。 让我们将其移回工作目录。 我们可以将cd进入dir1,然后使用mv Combined.txt ..“将Combined.txt移至父目录”。 但是我们可以使用另一个路径快捷方式来完全避免更改目录。 以两个点(..)表示父目录的方式相同,因此可以使用单个点(.)表示当前的工作目录。 因为我们知道dir1中只有一个文件,所以我们也可以只使用“ *”来匹配该目录中的任何文件名,从而节省了几次击键。 因此,将文件移回工作目录的命令就变成了这个(注意点之前的空格,有两个参数传递给mv):

mv dir1/* .

mv命令还允许我们一次移动多个文件。 如果您传递两个以上的参数,则最后一个参数将被视为目标目录,而其他参数将被视为要移动的文件(或目录)。 让我们使用一个命令将Combined.txt,所有test_n.txt文件和dir3移至dir2。 这里还有更多事情要做,但是如果您一次查看每个参数,您应该能够弄清楚正在发生的事情:

mv combined.txt test_* dir3 dir2
ls
ls dir2

如果将.txt合并到dir2中,那么如果我们决定它再次位于错误的位置会发生什么呢?而不是dir2,它应该放在dir6中,即dir5中的dir6,后者在dir4中。根据我们现在对路径的了解,这也没有问题:

mv dir2/combined.txt dir4/dir5/dir6
ls dir2
ls dir4/dir5/dir6

请注意,mv命令允许我们将文件从一个目录移动到另一个目录,即使我们的工作目录完全不同。这是命令行的一个强大属性:无论您在文件系统的哪个位置,仍然可以在完全不同的位置对文件和文件夹进行操作。由于我们似乎经常使用(并移动)该文件,也许我们应该将该文件的副本保存在我们的工作目录中。就像mv命令移动文件一样,cp命令复制它们(同样,请注意点前的空格):

cp dir4/dir5/dir6/combined.txt .
ls dir4/dir5/dir6
ls

现在,让我们在工作目录中创建文件的另一个副本,但名称不同。我们可以再次使用cp命令,但是与其给它一个目录路径作为最后一个参数,不如给它一个新的文件名:

cp combined.txt backup_combined.txt
ls

这很好,但备份名称的选择可能会更好。为什么不将它重命名,以便它总是出现在排序列表中的原始文件旁边。传统的Unix命令行处理重命名,就像将文件从一个名称移到另一个名称一样,所以我们的老朋友mv是要使用的命令。在本例中,只需指定两个参数:要重命名的文件和希望使用的新名称。

mv backup_combined.txt combined_backup.txt
ls

这也适用于目录,为我们提供了一种方法来解决那些在前面创建的名称中有空格的困难的目录。为了避免在第一个命令之后重新键入每个命令,请使用向上箭头在历史记录中提取前面的命令。然后,您可以在运行该命令之前编辑它,方法是用箭头键左右移动光标,然后用Backspace将字符移到左边,或者用Delete移除光标所在的字符。最后,键入适当的新字符,并在完成后按EnterReport来运行命令。请确保在这两行中都更改了数字的两个外观。

mv "folder 1" folder_1
mv "folder 2" folder_2
mv "folder 3" folder_3
mv "folder 4" folder_4
mv "folder 5" folder_5
mv "folder 6" folder_6
ls

删除文件和文件夹

警告!!!

在下一部分中,我们将开始删除文件和文件夹。 为了绝对确保您不会意外删除主文件夹中的任何内容,请在继续操作之前使用pwd命令仔细检查您是否仍在/tmp/tutorial目录中。

现在我们知道了如何移动、复制和重命名文件和目录。但是,考虑到这些只是测试文件,也许我们实际上并不需要三个不同的组合.txt副本。让我们使用rm(Remove)命令稍微整理一下:

rm dir4/dir5/dir6/combined.txt combined_backup.txt

也许我们也应该删除一些多余的目录:

rm folder_*

Error when running rm on directories

图中提示内容显示是一个文件夹不能删除,rm确实有一个小的安全机制。 当然,您可以使用它通过单个命令删除目录中的每个文件,不小心立即清除了数千个文件,而无从恢复它们。 但是,它不允许您删除目录。 我想这确实有助于防止您意外删除成千上万个文件,但是对于这种破坏性命令阻止删除空目录来说,这确实有点小。 幸运的是,有一个rmdir(删除目录)命令可以代替我们执行此操作:

rmdir folder_*

Error when running rmdir on a non-empty directory

好吧,好点了,但还是有个错误。如果您运行ls,您将看到大多数文件夹都已消失,但是folder_6仍在。您可能还记得,folder_6中仍然有一个folder_7rmdir将只删除空文件夹。同样,这是一个小的安全机制,以防止您无意中删除满是文件的文件夹。


但是,在上边这种情况下,我们确实这样做。 在rmrmdir命令中添加选项将使我们即可执行危险动的操作! 对于rmdir,我们可以添加-p参数来告诉它也删除父目录。 将其视为与mkdir -p的对立点。 因此,如果要运行rmdir -p dir1/dir2 /dir3,它将首先删除dir3,然后删除dir2,然后最后删除dir1。 它仍然遵循通常的rmdir规则,即仅删除空目录,因此,例如,如果dir1中也有文件,则仅删除dir3dir2


一种更常见的方法,当您非常、非常、非常确信要删除整个目录和目录中的任何内容时,是告诉rm使用-r参数递归工作,在这种情况下,它将愉快地删除文件夹和文件。考虑到这一点,下面是一个命令,用于清除那个烦人的folder_6和其中的子目录:

rm -r folder_6
ls

请记住:尽管rm -r既方便又快捷,但也很危险。 在使用rmdir删除文件之前,最明确的删除文件的方法是最安全的清除目录,然后使用cd ..到父目录。


警告

与图形界面不同,rm不会将文件移动到名为“垃圾箱”或类似文件的文件夹中。 相反,它将全部,完全,不可撤销地删除它们。 您需要非常谨慎地使用与rm一起使用的参数,以确保仅删除要删除的文件。 使用通配符时应格外小心,因为意外删除多余的文件很容易。 您命令中的错误空格字符可以完全更改它:rm t*表示“删除所有以t开头的文件”,而rm t *表示“删除文件t以及名称包含零个或多个字符的任何文件, 如果您完全不确定,请对rm使用-i(交互式)选项,这将提示您确认每个文件的删除;输入Y删除它,输入N保留它,以及 按Ctrl-C可完全停止操作。


推荐阅读

Ubuntu初学教程,基本的命令(四)之管道符应用


版权声明:本文由静水流深发布,如需转载请注明出处。

分享给朋友:

相关文章

Ubuntu初学教程,基本的命令(五)之超级用户和命令行

Ubuntu初学教程,基本的命令(五)之超级用户和命令行

超级用户,顾名思义,是一个拥有超能力的用户。在旧系统中,它是一个真正的用户,具有一个真实的用户名(几乎总是“root”),您可以像登录密码一样登录。至于这些超级功能:root可以修改或删除系统上任何目...

Ubuntu更换国内源

Ubuntu更换国内源

配置方法新手推荐使用图形界面配置: 系统设置 -> 软件和更新 选择下载服务器 -> "mirrors.aliyun.com"终端命令更改root用户登录用编辑器打开:...

Ubuntu初学教程,基本的命令(一)之开启终端遍历目录路径

Ubuntu初学教程,基本的命令(一)之开启终端遍历目录路径

在计算机行业的发展初期,一种早期的操作系统被称为Unix。它被设计为在大型机上作为多用户系统运行,用户可以通过各个终端远程连接到该系统。从现代标准来看,这些终端是非常基本的:只有键盘和屏幕,没有电源在...

Centos更换国内源

Centos更换国内源

1. 备份mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup2. 下载新的 CentOS-Bas...

更换EPEL国内阿里源

更换EPEL国内阿里源

备份原epel源mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backupmv /etc/yum.re...

Ubuntu安装配置Apache

Ubuntu安装配置Apache

安装Apache要安装Apache,请运行以下命令安装最新的软件包apache2:sudo apt update sudo apt install ...