文章目录
- 1、mkdir (make directory)
- 2、rmdir (remove directory)
- 3、rm(remove)
- 4、>
- 5、touch 新建文件
- 6、mv(move)
- 7、cp(copy)
1、mkdir (make directory)
mkdir
(make directory) 就是创建一个文件夹的意思, 使用起来很简单.
mkdir folder
(不带/也可以),夹中夹mkdir folder/f
mkdir f1 f2 f3
新建多个文件夹
mkdir -m 777 -v -p /home/bryant/1/2/3/
显示
mkdir: create directory '/home/bryant/1'
mkdir: create directory '/home/bryant/1/2'
mkdir: create directory '/home/bryant/12/3/'
创建多个文件夹
mkdir {dirA,dirB}
2、rmdir (remove directory)
有一个前提条件. 这些要移除的文件夹必须是空的. 不然会失败.
rmdir folder
3、rm(remove)
rm 命令在 Linux 和 Unix 系统中用于删除文件或目录。它是 “remove” 的缩写。使用 rm 命令时需要格外小心,因为一旦删除文件或目录,除非有备份,否则通常无法恢复。
- -f, --force:强制删除文件或目录,忽略不存在的文件,不提示确认。这个选项在脚本中特别有用,因为它可以避免因文件不存在而导致的错误中断。
- -i, --interactive:交互式删除文件,在删除每个文件之前提示用户确认。这个选项有助于防止意外删除重要文件。
- -r, -R, --recursive:递归地删除目录及其内容,即删除目录及其包含的所有文件和子目录。这个选项是删除目录所必需的。
- -v, --verbose:详细模式,显示被删除的每个文件的名称。这个选项在删除大量文件时很有用,因为它可以提供进度反馈。
- –one-file-system:在递归删除时,rm 默认会跨越文件系统边界(比如,从一个挂载的目录删除到另一个挂载的目录)。这个选项会阻止这种跨文件系统的删除。
- –no-preserve-root:默认情况下,rm 命令不会删除根目录(/)。这个选项允许删除根目录及其内容,这是一个非常危险的操作,需要极高的权限(通常是 root 权限),并且强烈不建议使用。
- -d, --dir:删除空目录。当需要删除空目录而不想递归删除其下的内容时,这个选项很有用。注意,这不同于 -r,-r 可以删除非空目录。
- –preserve-root:这个选项实际上并不是 rm 命令的直接选项,但提到它是因为它用于防止意外删除根目录。一些系统可能默认设置了 rm 的别名来包含 --preserve-root 选项,以确保即使是以 root 用户身份运行,也不能删除根目录。
那文件夹里面有文件的这种情况, 或者是移除单个文件的情况, 我们都能用 rm 来实现.
rm file1
移除单个文件rm -i
有提示地移除文件 (为了避免误删),每个要移除的文件都进行提示rm -I
有提示地移除文件 (为了避免误删),超过3个文件才进行提示rm -r folder
或者rm -R folder
可以在文件夹中有文件的情况下删除这个文件夹rm -rf xxx
递归强制删除rm -rf -v xxx
Remove with Verbose Information,删除带有子目录的目录会提供详细信息rm -r -i xxx
删除确认,yes or no
经常在删除文件时会碰到 Device or Resource is busy
的情况,这个时候尝试用下面的方法:
-
使用 ps 和 kill 命令查看并删除相应的进程,时候再执行rm删除操作
-
使用lsof命令查看使用该文件并用kill删除,再执行rm操作
-
使用fuser -kvm /mnt/test命令,再执行rm操作
- k参数: 缩写kill
- v参数: 详细输出
- m参数: 表面指定的路径为挂载点
除了 rm,还可以用 find
- 使用find命令结合-exec命令来删除
find /tmp -type f -exec rm -rf {} \;
- 使用find命令结合xargs命令来删除
find /tmp -type f | xargs rm -rf
文件太多的话(rsync命令快速删除大目录)
#先创建一个空目录
mkdir /usr/local/newdata/#执行删除,原理是用新的空目录替换要删掉的目录(/usr/local/olddata/为要删掉的目录)
rsync --delete-before -d /usr/local/newdata/ /usr/local/olddata/#执行完删除操作后,新建目录和要删掉的目录都变成空的了,可以把刚才新建的目录也删掉
rm -rf /usr/local/newdata/
使用 rsync 命令就会发现,删掉几十 G 的目录瞬间就可以搞定了。
rsync --delete-before -avH --progress --stats /tmp/ /2b_del_dir/
参数说明
-d --dirs :以不递归的方式拷贝目录本身。默认递归时,如果源为"dir1/file1",则不会拷贝dir1目录,使用该选项将拷贝dir1但不拷贝file1。-a: 归档模式-v: 显示全部过程-H: 保持硬链接文件-progress 在传输时显示传输过程
4、>
在 Linux 上使用重定向符(>)创建一个文件
> bryant.txt
5、touch 新建文件
touch
能够新建文件,mkdir
用来新建文件夹
touch file1
建立一个文件touch file1 file2 file3
建立多个文件
touch 命令常用于将每个文件的访问和修改时间更新为当前时间。
如果指定的文件名不存在,将会创建一个新的文件。
touch 不允许我们在创建文件的同时向其中输入一些文本。它默认创建一个 0KB 的空文件。
下面的描述是错误的
灵活应用
touch 现有的.cpp # 刷新文件时间
可编译
6、mv(move)
1)移动去另一个文件夹
mv source destination
-f :force 强制癿意忠,如果目标档案已经存在,不会询问而直接覆盖;
-i :若 destination 已经存在时,就会询问是否覆盖!
-u :若目标档案已经存在, source 比较新,才会 update
-n:不覆盖已存在的文件
2)重命名文件
因为移动文件到原始的地点, 但是以不同的文件名. 这种做法不就是在重命名嘛!
mv file1 file1rename
补充,有时候转移的文件较多时,会出现 Argument list too long
,使用 cp
复制命令时也同样会出现该警示
其中一种解决方法是配合 * 来转移文件名中有共性的文件,
例如 mv 1*.jpg 来移动文件名以 1 开头的图片
另外一种方法是配合 find
来转移
find sourcePath/ -name "*.txt" -exec mv {} targetPath/ \;
#or
find sourcePath/ -type f -exec mv {} targetPath/ \;
注意:结束符 \;
不能省,不过该方法速度偏慢
参考:linux: Argument list too long
7、cp(copy)
在 Linux 系统中,cp 命令是用于复制文件或目录的常用命令。它提供了多个参数来支持不同的复制需求和行为。
覆盖文件,加上 \
就不会提示 yes or no,cp
等同于 cp -i
\cp 源文件 目标文件
cp 源文件1 源文件2 源文件3 ... 目标目录
,复制多个文件
常用参数
- -a, --archive
归档模式复制,保留文件的所有属性,包括链接、文件属性,并递归地复制目录。这相当于-dR --preserve=all的组合。 - -r, --recursive
递归复制目录及其中的所有文件和子目录。如果源文件是一个目录,则使用该参数可以复制整个目录树。 - -p, --preserve
保留文件的属性,如权限、所有者、时间戳等。这是复制文件时保持文件特性的常用选项。 - -u, --update
仅复制源文件比目标文件新或目标文件不存在的文件。这有助于更新目标目录中的文件,而不覆盖较新的文件。 - -l, --link
创建硬链接而不是复制文件。硬链接指向文件系统中的相同数据块,因此删除其中一个链接不会影响其他链接。注意,硬链接只能在同一文件系统中创建。 - -s, --symbolic-link
创建符号链接(软链接)而不是复制文件。符号链接是一个特殊的文件,它包含对另一个文件或目录的引用。 - -i, --interactive
在覆盖目标文件之前提示用户确认。这有助于防止意外覆盖重要文件。 - -v, --verbose
显示详细的复制过程信息,包括复制的文件名和目录。这有助于了解复制操作的具体细节。 - -f, --force
强制复制文件,即使目标文件已经存在且无法覆盖。这通常用于脚本中,以避免因文件已存在而导致的错误。 - -b, --backup
在覆盖目标文件之前,先创建目标文件的备份。这有助于保留文件的旧版本,以防需要恢复。 - –parents
复制文件时保留文件的目录结构,即在目标目录下创建源文件的相对路径。这有助于保持文件原有的组织结构。
注意事项
- 在使用 cp 命令时,请确保目标文件或目录具有足够的权限,以便能够成功复制文件。
- cp 命令可以复制链接文件,但不会复制链接指向的实际文件或目录。
- 如果目标目录不存在,使用 -r 参数复制目录时,会自动创建目标目录。
- 通过合理使用这些参数,可以根据不同的需求进行灵活的文件和目录复制操作。
eg:
cp 老文件 新文件
如果新文件已存在,上面指令中老文件会直接覆盖新文件,为了避免这种情况,用如下指令cp -i 老文件 新文件
这样,如果新文件已存在会提示你是否overwrite
新文件,回答yes
、YES
、y
同意覆盖,回车或其他字母放弃覆盖cp file1 folder1/
文件复制去文件夹cp -R folder1/ folder2/
复制文件夹,加一个-R
(recursive),表示递归的将 folder1 中的所有文件复制到 folder2中cp file* folder2/
复制多个文件. 复制名字部分相同的多个文件, * 是说”你就找文件前面是 file 的文件, 后面是什么名字无所谓”。后缀相同也行cp *4 folder2/
cp file1copy file2 folder1/
复制多个文件,cp 会默认最后一个选项是要复制去的文件夹