Linux 文件处理

创建文件

touch filename

$ touch test_one
$ ls -l test_one
-rw-rw-rw- 1 levid_gc levid_gc 0 Aug 19 19:31 test_one

复制文件

cp source destination

当 source 和 destination 参数都是文件名时,cp 命令将源文件复制成一个新文件,并且以 destination 命名。

$ cp test_one test_two
$ ls -l test_*
-rw-rw-rw- 1 levid_gc levid_gc 0 Aug 19 19:38 test_one
-rw-rw-rw- 1 levid_gc levid_gc 0 Aug 19 19:42 test_two

在使用 cp 命令的时候,建议习惯性地加上 -i 参数,这样在复制的时候,如果存在同名的文件时,会进行提问是否覆盖已存在的文件,y - 是,n - 否。

$ cp -i test_one test_two
cp: overwrite 'test_two'? n

将文件复制到现有目录:

  • 使用绝对路径

    $ cp -i test_one /home/levid_gc/Documents
    $ ls -l /home/levid_gc/Documents
    total 0
    -rw-rw-rw- 1 levid_gc levid_gc 0 Aug 19 19:54 test_one
    
  • 使用相对路径

    $ cp -i test_one Documents
    cp: overwrite 'Documents/test_one'? n
    

注意:上面的例子中,目录名称后面都加上了正斜杠 /,这表明 Documents 是目录而非文件,这有助于明确目的,而且在复制单个文件时非常重要。如果没有正斜杠,子目录 /home/levid_gc/Documents 又不存在,就会有麻烦。在这种情况下,试图将一个文件复制到 Documents 子目录反而会创建一个名为 Documents 的文件,连错误信息都不会显示!

重命名文件

mv

在 Linux 中,重命名文件称为移动。mv 命令可以将文件和目录移动到另一个位置或重新命名。

$ ls -li f?ll
 4222124651433681 -rw-rw-rw- 1 levid_gc levid_gc 0 Aug 19 22:05 fall
 5348024558276734 -rw-rw-rw- 1 levid_gc levid_gc 0 Aug 19 22:05 fell
 2533274791170177 -rw-rw-rw- 1 levid_gc levid_gc 0 Aug 19 22:05 fill
21110623253397912 -rw-rw-rw- 1 levid_gc levid_gc 0 Aug 19 22:06 full
$ mv fall fzll
$ ls -li f?ll
 5348024558276734 -rw-rw-rw- 1 levid_gc levid_gc 0 Aug 19 22:05 fell
 2533274791170177 -rw-rw-rw- 1 levid_gc levid_gc 0 Aug 19 22:05 fill
21110623253397912 -rw-rw-rw- 1 levid_gc levid_gc 0 Aug 19 22:06 full
 4222124651433681 -rw-rw-rw- 1 levid_gc levid_gc 0 Aug 19 22:05 fzll

移动文件会将文件名从 fall 更改为 fzll,但 inode 编号和时间戳保持不变。这是因为 mv 只影响文件名。

删除文件

rm

在 Linux 中,删除称为移除。

$ rm -i fzll
rm: remove regular empty file 'fzll'? y
$ ls -l fzll
ls: cannot access 'fzll': No such file or directory

rm 命令的另外一个特性就是,如果要删除很多文件且不受提示符的打扰,可以使用 -f 参数强制删除,但是慎重使用。

参考资料

  • Linux 命令行与 shell 脚本编程大全,第 3 版

你可能感兴趣的:(Linux 文件处理)