当前位置:首页>弱电技术>系统运维>在 Linux 上创建和删除目录结构

在 Linux 上创建和删除目录结构

在 Linux 上管理目录很容易,但是当您需要创建、清空或删除大型、复杂的目录结构时,这个过程会变得更加复杂。这篇文章将带你从最基本的命令到一些相当复杂的命令,这些命令可以帮助简化这个过程。

在 Linux 上创建和删除目录结构

mkdir

mkdir命令可以像这样创建一个目录:

$ mkdir newdir

它还可以使用如下命令创建复杂的目录和子目录结构。-p参数告诉命令创建基目录(如果它不存在)。

显示的命令中出现的每组目录名称(如{1,2,3} 和{docs,script})将导致在该级别创建一系列子目录。

$  mkdir -p newdir/{1,2,3}/{docs,scripts}

只需向mkdir命令添加额外的/{dir1,dir2}类型规范,即可根据需要向目录结构添加任意多的级别。如果添加-v(详细)选项,该命令将显示每个创建的目录。

$ mkdir -pv newdir/{1,2,3}/{docs,scripts}
mkdir: created directory 'newdir'
mkdir: created directory 'newdir/1'
mkdir: created directory 'newdir/1/docs'
mkdir: created directory 'newdir/1/scripts'
mkdir: created directory 'newdir/2'
mkdir: created directory 'newdir/2/docs'
mkdir: created directory 'newdir/2/scripts'
mkdir: created directory 'newdir/3'
mkdir: created directory 'newdir/3/docs'
mkdir: created directory 'newdir/3/scripts'

您可以在使用递归ls命令设置目录结构后查看目录结构,如下所示,它显示每个级别的目录:

$ ls -lR newdir
newdir:
total 12
drwxr-xr-x. 4 shs shs 4096 Dec 29 11:12 1
drwxr-xr-x. 4 shs shs 4096 Dec 29 11:12 2
drwxr-xr-x. 4 shs shs 4096 Dec 29 11:12 3
newdir/1:
total 8
drwxr-xr-x. 2 shs shs 4096 Dec 29 11:12 docs
drwxr-xr-x. 2 shs shs 4096 Dec 29 11:12 scripts
newdir/1/docs:
total 0
newdir/1/scripts:
total 0
newdir/2:
total 8
drwxr-xr-x. 2 shs shs 4096 Dec 29 11:12 docs
drwxr-xr-x. 2 shs shs 4096 Dec 29 11:12 scripts
newdir/2/docs:
total 0
newdir/2/scripts:
total 0
newdir/3:
total 8
drwxr-xr-x. 2 shs shs 4096 Dec 29 11:12 docs
drwxr-xr-x. 2 shs shs 4096 Dec 29 11:12 scripts
newdir/3/docs:
total 0
newdir/3/scripts:
total 0

tree

查看新创建的目录结构的另一种可能更令人满意的方法是使用tree命令,它以一种非常容易理解的方式显示复杂目录的结构,如下所示:

$ tree newdir
newdir
├── 1
│   ├── docs
│   └── scripts
├── 2
│   ├── docs
│   └── scripts
└── 3
├── docs
└── scripts
9 directories, 0 files

将文件添加到新目录后,命令也会显示这些文件。

$ tree newdir/1
newdir/1
├── docs
│   └── notes   <== new file
└── scripts
2 directories, 1 file

touch

touch命令可用于创建新文件或更新现有文件的时间戳。要将空文件添加到newdir/2/docs目录,您可以使用如下命令:

$ touch newdir/2/docs/notes

使用 /dev/null

要清空文件,您可以使用如下所示的命令将/dev/null重定向到该文件。在命令序列中,我们列出当前文件,使用/dev/null清空它,然后再次列出它以验证它是否已被清空。

$ ls -l newdir/1/docs/notes
-rw-r--r--. 1 shs shs 139 Dec 29 11:42 newdir/1/docs/notes
$ cat /dev/null > newdir/1/docs/notes
$ ls -l newdir/1/docs/notes
-rw-r--r--. 1 shs shs 0 Dec 29 11:43 newdir/1/docs/notes

find

您可以使用find命令递归定位和显示文件或目录。在下面的命令中,我们使用find来显示newdir目录结构中的文件。添加-ls可提供包含文件详细信息的长列表。

$ find newdir -type f
newdir/2/docs/notes
newdir/1/docs/notes
$ find newdir -type f -ls
5782884      0 -rw-r--r--   1 shs      shs             0 Dec 29 11:46 newdir/2/docs/notes
5782883      0 -rw-r--r--   1 shs      shs             0 Dec 29 11:43 newdir/1/docs/notes

移动到一个目录然后再​​返回

如果您使用cd命令移动到新目录结构中任何位置的目录,您可以  使用cd –命令返回到您键入cd命令的目录,如下所示:

$ pwd
/home/shs/newdir
$ cd 1/docs
$ ls -l
total 0
-rw-r--r--. 1 shs shs 0 Dec 29 11:43 notes
$ cd -
/home/shs/newdir

cd –命令总是将您带回到您在文件系统中键入之前的cd命令之前所在的位置。

删除复杂的目录结构

要删除复杂的目录结构,假设您具有这样做的适当权限,只需使用如下所示的递归rm命令即可。

$ rm -rf newdir
$ ls -ld newdir
ls: cannot access 'newdir': No such file or directory

该目录及其所有内容将被删除。

使用脚本

如果使用正确的命令,创建复杂的目录结构、进行更改并最终删除它会很容易。如果您需要经常创建或替换特定的结构,那么使用脚本可以为您省去很多麻烦。这是一个示例脚本,它将创建一个特定的结构或根据需要替换它。

#!/bin/bash
if [ $# == 0 ]
then
echo -n "dirname> "
read dirname
else
dirname=$1
fi
if [ ! -d $dirname ]; then
mkdir -p $dirname/{users,files,notes}
tree $dirname
else
echo "$dirname exists. Remove it first? [y,n]"
read ans
if [ $ans == 'y' ]
then
rm -rf $dirname
mkdir -p $dirname/{users,files,notes}
tree $dirname
else
echo ok -- $dirname left as is
fi
fi

本文由 @我是pm 发布于弱电智能网 。

题图来自Unsplash,基于CC0协议

内容观点仅代表作者本人,弱电智能网平台仅提供信息存储空间服务。

如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

文章名称:《在 Linux 上创建和删除目录结构》

文章链接:https://www.ruodian360.com/tech/sytemops/40768.html

添加微信ydian188免费入群,记得备注“弱电智能网”。

给TA打赏
共{{data.count}}人
人已打赏
系统运维

详解shell 运行原理及Linux权限

2023-1-6 20:54:58

系统运维

Win10开机修复磁盘错误怎么跳过?Win10关闭开机磁盘检查的方法

2023-1-10 15:58:33

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
购物车
优惠劵
搜索