常用Bash命令整理之操作文件和目录


1. touch - 创建文件

touch命令就可用于创建、变更和修改文件的时间戳。它是 Linux 操作系统的标准程序。touch命令又如下选项:

-a: 只改变访问时间 
-c: 不创建任何文件
-m: 只改变修改时间
-r: 使用指定文件的时间替代当前时间
-t: 使用 [[CC]YY]MMDDhhmm[.ss] 替代当前时间

touch 命令的常见用法如下:

# 创建一个名为 effyl 的新空文件
touch effyl

# 同时创建名称分别为 effyl myeffyl lueffyl 的三个文件
touch effyl myeffyl lueffyl

# 使用 -a 选项,可以改变或更新文件的最新访问时间,如果文件 effyl 不存在,则新创建一个
touch -a effyl

# 使用 -c 选项,可以避免创建一个新文件,并用当前时间更新文件的时间戳
touch -c effyl

# 使用 -m 选项,可以只改变文件的修改时间,而访问时间不变
touch -m effyl

# 使用 -c 和 -t 选项,来明确设置文件的时间
touch -c -t YYMMDDHHMM filename

# 如果想使用文件 myeffyl 的时间戳更新文件 effyl 的时间戳,可以使用 -r 选项
touch -r myeffyl effyl

2.mkdir - 创建目录

mkdir命令用于创建一个新目录。最基本的mkdir命令的使用方法如下所示:

# 在当前目录下创建一个给定的目录名
mkdir <dirname>

# 在 backup 中的相对路径创建一个名为 old 的目录
mkdir backup/old

# 在 backup 中的绝对路径中创建一个名为 old 的目录
mkdir /home/blinkfox/backup/old

# 使用 -p 选项,会自动创建所有还不存在的父目录
mkdir -p backup/old

# 使用 -m 选项,可以设置将要创建目录的权限
# 如:创建一个任何人都有读写访问权限的目录
mkdir -p -m 777 backup/old

3.cp - 复制文件或目录

cp命令用于将文件从一个地方复制到另一个地方。原来的文件保持不变,新文件可能保持原名或用一个不同的名字。

使用 cp 命令复制文件和目录的语法有以下几种:

# 复制源文件到目标文件
cp [OPTION] SOURCE DEST

# 复制一个或多个源文件到一个目录
cp [OPTION] SOURCE... DIRECTORY

# 同上
cp [OPTION] -t DIRECTORY SOURCE... 

常用使用示例如下:

# 在当前目录下,创建一个文件 file.txt 的副本,取名为 newfile.txt
cp file.txt newfile.txt

# 复制当前目录下的 file.txt 文件到 /tmp 目录下
cp file.txt /tmp

# 复制当前目录下的所有文件到 /tmp 目录下
cp * /tmp

# 使用 -p 选项,可以使复制一个文件到新文件时,保留源文件的所有者、权限等信息
cp -p filename /path/to/new/location/myfile

# 使用 -R 或 -r 选项,恶意递归地复制一个目录
# 即将一个目录及其下的所有文件和子目录都复制到另一个目录
cp -R * /home/blinkfox/backup

4.ln - 链接文件或目录

ln命令用于创建软链接或硬链接。使用 -s 选项,可以创建一个软链接:

# 在目录 lib 下创建一个软链接 library.so,链接到 /home/blinkfox/src/library.so
ln -s /home/blinkfox/src/library.so /home/blinkfox/lib

# 创建目录的软链接
ln -s /home/blinkfox/src source

5. mv - 移动文件或目录

mv命令用于将文件和目录从一个位置移到另外一个位置。除了移动文件,mv命令还可用于修改文件或目录的名字。

mv 命令的基本语法如下所示:

mv SOURCE... DIRECTORY

常用命令如下:

# 将当前目录下的文件 source.txt 移到目录 /tmp 下
mv source.txt /tmp

# 将目录 dir1、dir2 移到目录 dir_dist 下
mv dir1 dir2 dir_dist

# 将当前目录下的 old.txt 文件更名为 new.txt
mv old.txt new.txt

# 使用 -i 选项,在重写覆盖目标文件或目录之前给出提示信息
mv -i old.txt new.txt

# 将当前目录下的所有文件移动到目录 /tmp 下
mv * /tmp/

# 使用 -i 选项,从 dir1 中移动那些在目标目录中不存在的文件到目标目录
mv -u dir1/* dir2/

6.rm - 删除文件或目录

rm命令用于删除指定的文件和目录。其语法如下所示:

rm [OPTIONS]... FILE...

rm的常用命令如下:

# 删除当前目录下的文件 file1.txt、file2.txt、file3.txt
rm file1.txt file2.txt file3.txt

# 删除当前目录下的所有文件
rm *

# 删除你当前帐号主目录下的 temp 目录中的所有文件
rm ~/temp/*

# 使用 -i 选项,可以在删除每个文件或目录前提示用户确认
rm -i *

# 删除当前目录下所有以".doc"结尾的文件
rm *.doc

# 删除当前目录下所有文件名中包含"movie"字符串的文件
rm *movie*

# 删除当前目录下所有以"a"开头的文件
rm a*

# 删除当前目录下整个文件名(包括扩展名)只有 3 个字符的所有文件
rm ???

# 删除当前目录下文件扩展名有两个字符的所有文件
rm *.??

# 删除当前目录下文件名中含有字母 a 或 b 或 c 的所有文件
rm *[abc]*

# 删除当前目录下文件名中包含 0~9 的所有文件
rm *[0-9]*

# 删除当前目录下文件扩展名是字母 c 或 h 的所有文件
rm *.[ch]

# 删除 /tmp 目录下的所有文件及其子目录
rm -rf /tmp/*

-f 删除前不提示用户确认,并忽略不存在的文件

-r 递归地删除目录及其下的内容


文章作者: blinkfox
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 blinkfox !
  目录