7.2. 处理文件和文件夹

mkdir

创建目录。使用 mkdir -p 自动创建子目录。

Note目录即文件夹
 

在其他操作系统(如 Microsoft Windows)中,目录有时被称为文件夹

示例

mkdir -p /home/matt/work/maths

这将在 matt 的主目录下创建 “work” 和 “maths” 目录(如果 matt 的主目录不存在,也会创建它)。

mkdir foo

这将在当前路径中创建一个名为 “foo” 的目录。

rm

移除/删除文件或目录。您可以将标准通配符与此命令一起使用 第 20.4.1 节

命令语法

rm -options file_or_folder

您当然可以使用标准通配符来删除多个文件或多个目录和文件。

使用 -R-r 选项进行递归删除,这将删除子目录中的所有内容。也可以尝试 -f 选项强制删除(当您不想被提示时很有用)。

Tip禁用别名(每次执行)
 

在某些系统(如 Mandrake)上,别名会将 rm 发送到 rm -i(提示您确认要删除的每个文件)。要覆盖此设置,请使用:\rm -R directory (使用 \ 仅针对本次运行禁用别名)

rmdir

删除空目录。如果要删除包含文件的目录,请键入 “ rm -R directory”,请阅读上面关于 rm -R 的信息

命令语法

rmdir directory

这将仅在目录为空时删除目录,否则将退出并显示错误消息。

mv

将文件或目录移动到新位置或重命名文件/目录。

重命名示例

mv filename1 filename2

将 filename1 重命名为 filename2。

要移动文件或目录,只需键入

mv original_file_or_folder new_location

请注意,此命令可以使用标准通配符 第 20.4.1 节 来移动文件(不用于重命名)。

Tip移动和重命名
 

请注意,您也可以在单个命令中移动和重命名文件。区别在于目标(右侧),您将文件名更改为文件的新名称。

例如,键入

mv /etc/configuration.txt /home/joe/backupconfig

这会将文件 “configuration.txt” 移动到 /home/joe/ 并将其重命名为 “backupconfig”

cp

复制文件。有许多有用的选项,例如 -R (或 -r),它可以递归复制目录和子目录。

命令语法

cp -options file_or_files new_location

示例

cp file1 file2

简单地将 file1 复制到 file2(在同一目录下)。

cp /tmp/file1 ~/file2 /mnt/win_c

其中最后一个选项是要复制到的目录。上面的示例将文件系统中不同区域的两个文件复制到 /mnt/win_c

cp -R directory_and_or_files new_location

此命令将目录(和所有子目录)和/或文件复制到 new_location

请注意,此命令可以使用标准通配符 第 20.4.1 节 来复制多个文件。

当移动大型目录时,您可能还想尝试 “-u”,只有当源文件比您要复制到的目标文件更新,或者目标文件根本不存在时,才会复制。

ln

创建文件的链接。有两种类型的链接

硬链接

硬链接被认为是文件的指针(数量通过键入 ls -l 列出)。每个硬链接都是对文件的引用。

只有当所有硬链接都被删除时,文件本身才会消失。如果您删除原始文件,并且有指向它的硬链接,则原始文件将保留。

示例

ln target_name link_name 

将创建一个名为 link_name 的 “硬链接” 到 target_name,您需要删除这两个链接才能删除该文件。

符号链接

符号链接通过键入 “ln -s” 创建。 当您删除原始文件时,符号链接会断开,符号链接类似于 Windows “快捷方式”。

符号链接的优点是目标可以是另一个文件系统上的内容,而硬链接只能存在于同一文件系统上。

例如

ln -s target_name link_name

这将创建一个名为 “link_name” 的符号链接到 “target_name”,如果您删除原始文件,符号链接将无法工作(它变成一个断开的链接)。

shred

通过首先覆盖文件来安全地删除文件。防止数据被软件(甚至大多数硬件)恢复,请在使用 shred 时非常小心,因为您可能永远无法检索您在其上运行应用程序的数据。

例如

shred -n 2 -z -v /dev/hda1

“这告诉 shred,用随机数据覆盖分区 2 次 (-n 2),然后用零覆盖它来完成 (-z),并向您显示其进度 (-v)。当然,将 /dev/hda1 更改为正确的分区。每次传递可能需要一些时间,这就是为什么我将其设置为仅执行 2 次随机传递,而不是默认的 25 次。当然,您可以根据您的特定偏执程度和您拥有的时间来调整此数字。

由于 shred 在如此低的级别上写入,因此实际上文件系统是什么类型并不重要——一切都将无法恢复。一旦 shred 完成,您可以关闭机器,安心地出售或丢弃驱动器。

...但是,即使是 shred 设备也并非总是完全可靠的。例如,大多数磁盘都以应用程序不可见的方式映射出坏扇区;如果坏扇区包含敏感数据,`shred` 将无法销毁它。[ shred 信息页 ]。”[1]

NoteShredding 文件不适用于所有文件系统
 

请注意,正如 shred 手册页中提到的(请参阅手册,最好是信息页以获取更多信息)。 shred 在日志结构化或日志文件系统(如 JFS、ReiserFS、XFS、Ext3 和许多其他现代文件系统)上无法正确工作

Tip使用 shred 的替代方案
 

shred 在文件系统上运行时有其缺点。首先,由于必须安装它,因此您无法在操作系统文件系统上运行 shred,您也无法在 Windows 机器上轻松使用 shred,因为您无法在此机器上安装 shred

您可能想尝试诸如 DBAN 项目之类的替代方案,该项目创建可自我启动的软盘,可以完全擦除机器的硬盘。

您可能还想了解 chattr 如何帮助您在删除文件后 shred 文件(它与 shred 有类似的问题,仅适用于 ext2 和 ext3 样式的文件系统...),请参阅 第 14.2 节

du

显示有关文件大小的信息。使用 du filename 显示特定文件的大小。如果您在目录上使用它,它将显示目录中文件和每个子目录的大小信息。

du 的选项(使用 du -option(s)

  • -c -- 这将使 du 在处理完所有参数后打印总计。

  • -s -- 汇总每个参数(打印总计)。

  • -h -- 以 “人类可读” 模式打印事物;例如,打印 1M(兆字节)而不是 1,024,000(字节)。

在目录上使用 -hs 选项将显示目录和所有子目录的总大小。

命令语法

du -options file_directory_or_files

示例

du -hs *

此命令将列出当前目录中所有文件的大小,并且将列出子目录的大小,它将以人类可读的大小列出事物,使用 1024 Kb 为 1 兆字节,M 代表兆字节,K 代表千字节等。

file

尝试找出文件类型,例如,它可能会说它是:二进制文件、图像文件(它会说是 jpeg、bmp 等)、ASCII 文本、C 头文件和许多其他类型的文件,这是一个非常有用的实用程序。

命令语法

file file_name
stat

告诉您有关文件的详细信息,包括 inode 号码创建/访问日期。还具有许多高级选项和用途。

对于简单使用,键入

stat file
dd

在非常低的级别上复制数据,可用于创建磁盘副本 第 20.3 节 和许多其他内容(例如 CD 映像文件)。

dd 还可以对文件执行转换,并更改写入文件时使用的块大小。

命令语法,请注意块大小和计数是可选的,您可以使用文件而不是设备...

Note请注意
 

dd 是一个高级且难以使用的命令。它也非常强大,因此请小心使用它

命令语法

dd if=/dev/xxx of=/dev/xxx bs=xxxx count=x 

Warning警告
 

命令 dd 用于在非常低的级别上工作。它可以用于覆盖重要信息,例如您的主引导记录或硬盘的各个重要部分。使用时请小心(尤其是在使用设备而不是文件时)。

touch

此命令用于创建空文件,只需执行 touch file_name。它也用于更新文件上的时间戳。

touch 可用于更改文件的时间和/或日期

touch -t 05070915 my_report.txt[2]

此命令将更改 my_report.txt 上的时间戳,使其看起来像您在 9:15 创建了它。前四位数字代表 5 月 7 日 (0507),以 MM-DD(美式风格)表示,后四位数字 (0915) 代表时间,早上 9:15。

除了使用纯数字来更改时间外,您还可以使用类似于 date 工具的选项。例如

touch -d '5 May 2000' some_file.txt

您也可以使用 --date= 而不是 -d. 另请查看 第 8.1 节 下的 date 命令,以获取有关使用 -d--date= 的示例(date 部分的语法在使用 -d--date 时完全相同)。

split

将文件拆分成几个较小的文件。

使用 -b�xx 选项拆分成 xx 字节,也可以尝试 -k 表示千字节,-m 表示兆字节。您可以使用它来拆分文本文件和任何其他文件... 您可以使用 cat 重新组合文件。

如果您必须将某些内容传输到软盘或希望将文本文件分成特定大小,这可能会很有用。

命令语法

split -options file

这将把输入文件拆分成每份 1000 行输入(这是默认值...),并输出(使用上面的示例),输入名称为 file,“fileaa”(文件的第 1 部分),“fileab”(文件的第 2 部分),“fileac”(文件的第 3 部分)等等,直到没有更多文件要拆分。

注释

[1]

此信息(如引述)来自 “请为了所有可恢复的东西,粉碎您的硬盘!” 一文,编号 18,在 参考书目

[2]

此特定命令和解释已(经过编辑)来自 Linux 在线课堂,请参阅 参考书目 中的 [4] 以获取更多信息。