Linux常用命令 - 操作文件
在Linux系统中,一切皆文件。想要愉快的使用Linux系统,操作文件的命令系列是必备技能之一。
一 列出目录 ls
列出目录/子目录中文件,使用次数最多的命令之一,默认按字母排序。
ls [OPTION]... [FILE]...
ls path
列出指定目录/子目录中文件,path可以是绝对路径、相对路径、通配符。
#相对路径 列出user/Java/目录下文件
linux:~ user$ ls ~/Java/
Maven apache-tomcat-7.0.63
#相对路径 列出user/Java/目录下文件
linux:~ user$ ls /Users/user/Java/
Maven apache-tomcat-7.0.63
#通配符 列出user/Java/apache-tomcat-7.0.63/目录下文本文件.txt
linux:~ user$ ls ~/Java/apache-tomcat-7.0.63/*.txt
/Users/user/Java/apache-tomcat-7.0.63/RUNNING.txt
ls -R
递归列出目录和所有子目录中文件。
linux:Java user$ ls -R ~/Java/Maven/
LICENSE README.txt boot lib
NOTICE bin conf
/Users/user/Java/Maven//bin:
m2.conf mvn.cmd mvnDebug.cmd
mvn mvnDebug mvnyjp
/Users/user/Java/Maven//boot:
plexus-classworlds-2.5.2.jar
/Users/user/Java/Maven//conf:
logging settings.xml toolchains.xml
..........
ls -a
列出目录中所有文件,包括隐藏文件(文件名前加.为隐藏文件)。
linux:Java user$ ls -a
. .DS_Store apache-tomcat-7.0.63
.. Maven
ls -l
列出目录中文件的详细信息,权限、所有者、所属组、大小、操作时间等。
linux:Maven user$ ls -l
total 56
# 权限 硬链接/文件数量 所有者 所属组 大小(字节) 操作日期 文件名
--------------------------------------------------------------
-rw-r--r--@ 1 user staff 19091 4 22 2015 LICENSE
-rw-r--r--@ 1 user staff 182 4 22 2015 NOTICE
-rw-r--r--@ 1 user staff 2541 4 22 2015 README.txt
drwxr-xr-x@ 8 user staff 272 4 22 2015 bin
drwxr-xr-x@ 3 user staff 102 4 22 2015 boot
drwxr-xr-x@ 5 user staff 170 4 22 2015 conf
drwxr-xr-x@ 75 user staff 2550 8 14 2015 lib
ls -t
按时间倒序列出目录中文件(-r 正序)。
#-l -t组合,按时间倒序
linux:Downloads user$ ls -lt
total 409672
-rw-r--r--@ 1 user staff 1760739 8 10 21:24 Flux.zip
drwxr-xr-x@ 19 user staff 646 8 7 14:07 thunder-master
drwxr-xr-x@ 19 user staff 646 7 29 22:18 getmicah
drwxr-xr-x@ 27 user staff 918 6 22 13:56 rubygems-2.6.6
..........
#-l -t -r组合,按时间正序
linux:Downloads user$ ls -ltr
total 409672
drwxr-xr-x@ 27 user staff 918 6 22 13:56 rubygems-2.6.6
drwxr-xr-x@ 19 user staff 646 7 29 22:18 getmicah
drwxr-xr-x@ 19 user staff 646 8 7 14:07 thunder-master
-rw-r--r--@ 1 user staff 1760739 8 10 21:24 Flux.zip
..........
ls -S
按文件大小倒序列出目录中文件(-h 提高大小可读性)。
#-l -S组合,按文件大小倒序
linux:Downloads user$ ls -lS
total 409672
-rw-r--r--@ 1 user staff 184065647 2 21 15:57 webstorm.dmg
-rw-r--r--@ 1 user staff 12572852 2 21 16:13 node-v4.3.1.pkg
-rw-r--r--@ 1 user staff 7416170 2 21 18:20 NeteaseMusic.dmg
-rw-r--r--@ 1 user staff 1760739 8 10 21:24 Flux.zip
..........
#-l -S -r组合,按文件大小正序
linux:Downloads user$ ls -lSr
total 409672
-rw-r--r--@ 1 user staff 1760739 8 10 21:24 Flux.zip
-rw-r--r--@ 1 user staff 7416170 2 21 18:20 NeteaseMusic.dmg
-rw-r--r--@ 1 user staff 12572852 2 21 16:13 node-v4.3.1.pkg
-rw-r--r--@ 1 user staff 184065647 2 21 15:57 webstorm.dmg
#-h 自动转换为K,M,G提高大小可读性
linux:Downloads user$ ls -lSrh
total 409672
-rw-r--r--@ 1 user staff 1.7M 8 10 21:24 Flux.zip
-rw-r--r--@ 1 user staff 7.1M 2 21 18:20 NeteaseMusic.dmg
-rw-r--r--@ 1 user staff 12M 2 21 16:13 node-v4.3.1.pkg
-rw-r--r--@ 1 user staff 176M 2 21 15:57 webstorm.dmg
二 显示路径 pwd
显示当前所在工作目录绝对路径。
pwd [-L | -P]
linux:ning user$ pwd
/Users/user/File/ning
三 切换目录 cd
切换到指定工作目录,使用次数最多的命令之一。
cd [-options] [args ...]
cd path
使用相对路径/绝对路径切换当前工作目录。
#使用相对路径切换
linux:~ user$ cd Java
linux:Java user$
linux:apache-tomcat-7.0.63 user $ cd ../..
linux:~ user $
linux:Maven user $ cd ~
linux:~ user $
#使用绝对路径切换
linux:Maven user $ cd /Users/user
linux:~ user $
cd -
切换至上一个工作目录。
linux:Maven user $ pwd
/Users/user/Java/Maven
linux:Maven user $ cd ~
linux:~ user $ cd -
/Users/user/Java/Maven
四 创建文件/修改文件时间 touch
修改指定文件时间,如文件不存在则创建。
touch [-A [-][[hh]mm]SS] [-acfhm] [-r file] [-t [[CC]YY]MMDDhhmm[.SS]] file ...
#修改文件时间
linux:Maven user$ ls -l
total 56
-rw-r--r--@ 1 user staff 2541 4 22 2015 README.txt
linux:Maven user$ touch README.txt
linux:Maven user$ ls -l
total 56
-rw-r--r--@ 1 user staff 2541 8 17 21:34 README.txt
#创建文件a.txt
linux:Downloads user$ ls
48362221457590032191.jpg node-v4.3.1.pkg
Flux.zip npm-debug.log
linux:Downloads user$ touch a.txt
linux:Downloads user$ ls
48362221457590032191.jpg node-v4.3.1.pkg
Flux.zip npm-debug.log
a.txt
五 创建目录 mkdir
在当前工作目录下创建目录。
mkdir [-pv] [-m mode] directoryname ..._
mkdir directory
创建指定名称目录。
linux:Downloads user$ ls
48362221457590032191.jpg node-v4.3.1.pkg
Flux.zip npm-debug.log
linux:Downloads user$ mkdir test
linux:Downloads user$ ls
48362221457590032191.jpg node-v4.3.1.pkg
Flux.zip npm-debug.log
test
mkdir path
为指定路径逐级创建目录。
linux:test user$ ls
linux:test user$ mkdir -p downloads/game/wow
linux:test user$ ls -R
downloads
./downloads:
game
./downloads/game:
wow
./downloads/game/wow:
六 复制文件 cp
复制文件/目录到目标位置。
cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] sourcefile targetfile
cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] sourcefile ... targetdirectory
cp source target
复制文件到目标位置,存在则覆盖。
#复制到指定目录
linux:test user$ cp ~/Downloads/a.txt downloads/game/wow/
linux:test user$ ls -R
downloads
./downloads:
game
./downloads/game:
wow
./downloads/game/wow:
a.txt
#复制到当前目录
linux:test user$ cp ~/Downloads/a.txt .
linux:test user$ ls -R
a.txt downloads
./downloads:
game
./downloads/game:
wow
./downloads/game/wow:
a.txt
#复制到指定目录 并重命名
linux:test user$ cp ~/Downloads/a.txt downloads/b.txt
linux:test user$ ls -R
a.txt downloads
./downloads:
b.txt game
./downloads/game:
wow
./downloads/game/wow:
a.txt
cp source target(通配符)
复制与通配符匹配的文件到指定目录,存在则覆盖。
linux:test user$ cp ~/Downloads/*.txt .
linux:test user$ ls
a.txt downloads
cp -p source target
复制文件到目标位置,存在则询问是否覆盖。
linux:test user$ cp -i ~/Downloads/*.txt .
overwrite ./a.txt? (y/n [n]) y
linux:test user$ ls
a.txt downloads
linux:test user$
cp -a source target
复制整个目录及内容到目标位置。
linux:test user$ cp -a ~/Java/Maven .
linux:test user$ ls -R
Maven a.txt downloads
./Maven:
LICENSE README.txt boot lib
NOTICE bin conf
./Maven/bin:
.........
./Maven/boot:
.........
七 移动文件 mv
移动文件/目录到目标目录,也可作为重命名文件来使用。
mv [-f | -i | -n] [-v] source target
mv [-f | -i | -n] [-v] source ... directory
#移动文件到目标目录
linux:test user$ ls
a.txt downloads
linux:test user$ mv a.txt downloads/a.txt
linux:test user$ ls -R
downloads
./downloads:
a.txt game
./downloads/game:
wow
./downloads/game/wow:
#一定文件到目标目录,并重命名
linux:test user$ mv downloads/a.txt ./b.txt
linux:test user$ ls -R
b.txt downloads
./downloads:
game
./downloads/game:
wow
./downloads/game/wow:
#移动目录到目标目录
linux:test user$ mv downloads/game/wow .
linux:test user$ ls -R
b.txt downloads wow
./downloads:
game
./downloads/game:
./wow:
八 删除文件 rm
删除指定文件。
rm [-dfiPRrvW] file ... unlink file
rm file(通配符)
通过文件全名或通配符指定需要删除的文件。
#删除单个文件
linux:test user$ ls
a.txt b.txt c.txt downloads wow
linux:test user$ rm b.txt
linux:test user$ ls
a.txt c.txt downloads wow
#使用通配符删除多个文件
linux:test user$ ls
a.txt c.txt downloads wow
linux:test user$ rm *.txt
linux:test user$ ls
downloads wow
rm -Rf
删除目录及内部所有子目录和文件。
(-r Equivalent to -R.)
linux:test user$ ls -R
downloads
./downloads:
game
./downloads/game:
wow
./downloads/game/wow:
linux:test user$ rm -rf downloads
linux:test user$ ls -R
linux:test user$ mkdir -p downloads/game/wow
linux:test user$ ls -R
downloads
./downloads:
game
./downloads/game:
wow
./downloads/game/wow:
linux:test user$ rm -Rf downloads
linux:test user$ ls -R
linux:test user$
九 删除目录 rmdir
删除指定目录,被删除目录必须为空。
rmdir [-p] directory ...
#删除空目录 rmdir directory
linux:test user$ ls -R
downloads wow
./downloads:
game
./downloads/game:
./wow:
linux:test user$ rmdir downloads
rmdir: downloads: Directory not empty
linux:test user$ rmdir wow
linux:test user$ ls -R
downloads
./downloads:
game
./downloads/game:
linux:test user$
#删除路径 rmdir -p path
linux:test user$ rmdir -p downloads/game/
linux:test user$ ls -R
linux:test user$
引用自《Linux命令速查手册》