Linux 文件管理命令

创建文件

1、touch命令
可以通过touch命令来创建一个空文件

touch file_name

如果该文件已经存在,再使用touch命令时候,会刷新该文件的时间戳,文件内容不会发生改变。

2、重定向 >
可以通过重定向来创建一个空文件,如果该文件已经存在,会清空文件中的所有内容。(慎用)

> file_name

3、vi/vim
使用vi或vim编辑一个不存在的文件时,当编辑后第一次存盘时创建它

创建目录文件

mkdir命令

mkdir dir_name

# 如果是递归创建需要加 -P 参数
# 创建d这个目录文件时,如果上级目录不存在,就会自动创建
mkdir -P /a/b/c/d

复制文件

复制文件的原理:

本质就是创建一个新的文件,例如使用cp命令将文件复制到另一个目录中,则复制的文件将具有与原始文件相同的所有者和所属组。所以复制文件的时候,默认文件所有者和所属组会发生改变

cp命令

cp 原文件 复制后的文件

cp命令常用的参数有以下几个:

  • -a 多个选项的组合,包括复制目录、保留文件属性和其它一些属性。一般复制整个目录且需要保留文件属性的时候用它

  • -p 保留文件属性,复制单个非目录文件,需要保留属性就用它

  • -r 复制目录文件的时候需要加这个参数

移动文件

移动文件原理:

本质上在文件系统中修改了文件的路径。文件本身的内容和属性不会被修改,包括文件的所有者和所属组。因此,无论将文件移动到哪个目录,文件的所有者和所属组都将保持不变。所以移动不会改变文件的所有者和所属组

mv命令
移动文件或给文件改名使用mv命令,

mv 原文件 目标文件

mv的常用参数有这些:

  • -i 如果目标文件存在,会提示是否覆盖

  • -f 如果目标文件存在,直接覆盖

  • -T 将目标视为一个常规文件。如果目标是一个已存在的目录,mv 不会将源移动或重命名为该目录的子项,而是会尝试重命名或覆盖目标

注意事项:
1、使用mv移动文件的时候,如果有同名文件会默认覆盖掉,所以可以加 -i 参数避免文件被覆盖

2、默认同时移动多个文件的时候,如果目标文件是一个目录文件,会将前面的文件都移动到这个目录里面去

3、如果同时移动多个文件,且最后一个文件不是目录,会报错“mv: target 'file4' is not a directory”

删除文件

rm命令
删除文件使用rm 命令,如果不加任何参数会提示是否确认删除

rm常用的参数有这些

  • -f:强制删除,不提示是否确认删除
  • -r:删除目录文件的时候使用这个参数

注意事项
1、使用rm删除文件的时候确保路径的准确性

# 多打了个空格把系统格式化了
rm -rf / home/ehigh/tom.txt

2、如果不是必须删除的文件,可以给移动到/tmp目录下去

3、删除文件的时候慎用-r 或 -rf 选项

4、删除文件慎用通配符

打包文件

tar命令
打包一般用的就是tar工具,打包就是将几个文件整合成一个大文件,不会像压缩一样减小文件的大小。tar工具再进行打包的时候也可以指定压缩算法,将打包后的文件进行压缩处理。

tar常用的参数有这些:

  • -f 打包成一个文件(表示将结果输出到指定文件中)
  • -v 显示过程
  • -c 打包
  • -x 解压文件
  • -z 默认调用gzip命令来进行压缩
  • -j 调用bzip2命令来进行压缩
  • -C 解压到指定的路径,默认解压到当前所在的位置
  • -p 保留原始属性和权限
  • --exclude 排除指定文件不打包
# 打包
tar -czf 打包后的文件名称  需要打包的文件

# 解包
tar -xzf 需要解包的文件 -C /path(解包到哪个路径)

# 打包的时候排除某些文件
tar -czf 打包后的文件名称  --exclude='path/dir'  需要打包的文件

# 查看打包文件中都有哪些文件
tar -tf file_name

说明:
1、使用tar命令进行打包的时候要使用相对路径,不要用绝对路径,如果使用绝对路径会把整个路径都给打包进去,还会提示“tar: 从成员名中删除开头的“/”

例如:

# 例如:需要将/home/ehigh/text1/tom/bob下的所有文件打包成一个text.tar.gz的文件
    ehigh@ubuntu:~/text1/tom/bob$ tar -czf /home/ehigh/test.tar.gz /home/ehigh/text1/tom/bob/
    tar: Removing leading `/' from member names
    ehigh@ubuntu:~$ ls | grep test.tar.gz 
    test.tar.gz

# 解压这个文件
	ehigh@ubuntu:~$ tar -xzf test.tar.gz

# 发现将整个路径都给打包了
    ehigh@ubuntu:~/home/ehigh/text1/tom/bob$ pwd
    /home/ehigh/home/ehigh/text1/tom/bob

2、有多个参数的时候,-f必须放在参数的最后面,用于指定打包成的文件

# 这样是错的
tar -cfz file_name.tar file_name

# 正确
tar -czf file_name.tar file_name

3、使用exclude排除指定文件的时候,如果这个文件是一个目录,目录后面不能加斜杠,否者会把这个目录下的文件都打包进去

# 这样是错的
tar -czf file_name.tar --exclude=path/dir/  file_name

# 正确
tar -czf file_name.tar --exclude=path/dir  file_name

4、使用--exclude 选项时,通常使用的是相对路径,而不是绝对路径,因为tar命令对待路径的方式是基于你当前传递给它的目录结构。

# 错误
tar -czf PythonWorker.tar.gz  PythonWorker --exclude='/home/ehigh/work/PythonWorker/Worker/*/NVR_SDK'

# 正确
tar -czf PythonWorker.tar.gz --exclude='PythonWorker/Worker/*/NVR_SDK' PythonWorker

5、tar命令解压的时候会默认将目标目录下的同名文件给覆盖,所以为了防止这种情况的发生,解压的时候可以加一个-k参数来避免同名文件被覆盖。

tar -xvf archive.tar.gz --keep-old-files

tar -xvkf archive.tar.gz

posted on 2022-06-11 16:06  背对背依靠  阅读(44)  评论(0编辑  收藏  举报