Linux常用命令———文件和目錄操作命令(18個)
ls(列出目錄內容和屬性)
全拼list,功能是列出目錄的內容及其內容屬性信息。
-l(long) 長格式 註:-l 顯示的時間是mtime
-d --directorys當遇到目錄時列出目錄本身而非目錄內的文件
ls –d #只顯示. (.表示目錄本身)
ls –d */ #顯示當前目錄下的目錄及其子目錄
-r --reverse: 倒序顯示(按字母)
ls -lrt #顯示最近修改的文件
-R --recursive: 遞歸列出子目錄
-t(time): 按時間顯示(從現在到過去)
-h, --human-readable 以易於閱讀的格式輸出文件大小
-S: 按文件大小 大到小
ls-lhS #文件從小到大排序
-i --inode: 文件或目錄的 索引節點號
-n: 顯示UID和GID(-l顯示的是名稱)
-F: 給不同文件結尾加標識(目錄是/)
-p: 給目錄結尾加/
--color=auto 顯示顏色
inode
文件類型與權限:第1位為文件類型,後9位為權限。若最後有個. 則代表該文件是在SELinux開啟時創建的文件。若無. 則不是
文件類型總結
d:文件夾
-:普通文件
l:鏈接(類似Windows的快捷方式)
b:塊設備文件(例如硬盤、光驅等)
p:管道文件
c:字符設備文件(例如貓等串口設備)
s:套接口文件/數據接口文件(例如啟動一個MySql服務器時會產生一個mysql.sock文件)
特殊屬性的總結
sst,顯示在相應的x權限位上
setgid:1)執行文件的用戶以該文件所屬組的權限去執行
2)在設有該權限位的目錄下創建的文件,文件權限和組一致
sticky:該文件只有root用戶和文件屬主可刪除
硬鏈接數:文件為1,目錄為2,目錄下每多一個子目錄,硬鏈接數加1
../oldboy #上層目錄下的當前目錄
../oldboy/. #上層目錄下的當前目錄.
oldboydir/.. #子目錄的上層目錄
硬鏈接與軟鏈接區別
ln –s 源文件 鏈接文件 #創建軟鏈接
ln 源文件 鏈接文件 #創建硬鏈接
1) 在軟鏈接的inode與源文件不同,軟鏈接的block裏存放的是源文件的絕對地址。硬鏈接inode與軟鏈接相同,硬鏈接與源文件指向同一個block
2) 刪除源文件,軟鏈家會變成紅底白字失效。硬鏈接不受影響
3) 軟鏈接可以跨文件系統,硬鏈接不能跨文件系統。(inode和block都是在創建文件系統時生成的。硬鏈接共享indoe,決定了它不能跨文件系統)
時間戳
atime:訪問時間
ctime:屬性改變時間(mtime變,ctime同步變)
mtime:內容改變時間
文件名
存放在上層目錄的block中
cd(切換目錄)
全拼change directory,功能是從當前工作目錄切換到指定的工作目錄。
cp(復制)
全拼copy,其功能為復制文件或目錄。
- i 覆蓋前詢問
-R/r:遞歸,用於復制目錄;
-p:等於--preserve=模式,所有權,時間戳
--preserve[=屬性列表 保持指定的屬性(默認:模式,所有權,時間戳)
如果可能保持附加屬性:環境、鏈接、xattr 等
-d:等於--no-dereference --preserve=links
--no-dereference:不跟隨源文件中的符號鏈接
--preserve=links:保持鏈接的屬性
-a:相當於-pdR;
-p:保持屬性
–d:保持連接屬性
–R:遞歸復制
-n --no-clobber :不覆蓋已存在文件
cp dir{3,4} #復制dir3 為dir4
cp a {,.ori} #復制a 為a.ori
cp /etc/{sshd/sshd.config,dhcp/} #復制sshd.conf到dhcp目錄下
find(查找文件)
查找的意思,用於查找目錄及目錄下的文件。
-name 按照文件名查找文件。
-perm 按照文件權限來查找文件。
-user按照文件屬主來查找文件。可用nouser查沒有屬主的文件
-group 按照文件所屬的組來查找文件。可用nogroup查沒有屬組的文件
-mtime -n +n 按照文件的更改時間來查找文件 –n 表示n天內,+n表示n天以前
-maxdepth 查找最大目錄層數 如 1,即只查找一層目錄
-size 按文件大小查找 -size 20K –size 30K #查找20K到30K間的文件
find /data -type f -name "oldboy.txt" -exec rm {} \;
find /data -type f -name "*.txt" | xargs rm -f(刪除data目錄下所有txt文件)
mkdir(創建目錄)
全拼make directories,其功能是創建目錄。
-p, --parents 需要時創建目標目錄的上層目錄,但即使這些目錄已存在也不當作錯誤處理
mkdir –p /dir1/dir2/dir3
mv(移動/重命名文件)
全拼move,其功能是移動或重命名文件。
mv [選項]... 源文件... 目錄 #註意,目的地必須是目錄
mv [選項]... -t 目錄 源文件... #-t 會調換source和destination的位置,一般在有管道符時用
-f –force 覆蓋時不詢問
-n --no-clobber 不覆蓋已存在文件
-u --update 源文件比目標文件新,或目標文件不存在時才移動
pwd(當前目錄絕對路徑)
全拼print working directory,其功能是顯示當前工作目錄的絕對路徑。
-P --physical 目錄是軟連接時,顯示實際地址
-L --logical 顯示邏輯地址,即軟連接本身地址
rename(批量重命名文件)
用於重命名文件。
rename 源字符 替換字符 文件名 #必須要3個參數
通配符(用於文件名)
? 匹配任意一個字符
* 匹配任意多個字符
rename 100 200 100*.txt #把所有文件名以100開頭的.txt文件替換為200開頭
rename .txt .log * #把所有.txt文件的後綴名改為.log
rm(刪除)
全拼remove,其功能是刪除一個或多個文件或目錄。
-f(force)強制
-r(recursive)遞歸,用於刪除目錄
-d 刪除空目錄
rmdir(刪空目錄)
全拼remove empty directories,功能是刪除空目錄。
-p, --parents 刪除指定目錄及其上級文件夾,例如"rmdir -p a/b/c'"
touch(創文件)
創建新的空文件,改變已有文件的時間戳屬性。
-r --reference=文件 使用指定文件的時間屬性替代當前時間
touch -r des.php source.php #使用des.php的時間屬性,替換source.php的時間屬性
-d, --date=字符串 使用指定字符串表示時間替代當前時間。
mtime和atime會變為修改後的時間,ctime會變為執行命令的當前時間
touch -d "2 days ago" test.php #將test.php日期修改為2天以前
tree(樹形顯示)
功能是以樹形結構顯示目錄下的內容。
-a 顯示所有文件和目錄。
-C 在文件和目錄清單加上色彩,便於區分各種類型。
-d 顯示目錄名稱而非內容
-i 不以階梯狀列出文件或目錄名稱,可以方便過濾
-L 層級顯示,後接number,指定顯示幾層
basename(用於shell編程)
顯示文件名或目錄名。總是顯示最後的文件名或目錄名
dirname(用於shell編程)
顯示文件或目錄路徑。
lsattr(查看文件擴展屬性)
查看文件擴展屬性。
文件擴展屬性和文件權限最重要的不同在於屬性並不依賴於某個用戶帳號
chattr(設置擴展屬性)
改變文件的擴展屬性。
權限設定
+ 增加權限
- 取消權限
= 唯一設定權限
屬性
a:只能在添加模式下打開用於寫入. 只有root可以設置或清除該屬性
i:該文件屬性無法修改,只有root可設置或清除該屬性(在網卡DNS覆蓋/etc/resolv.conf中的DNS時,將resolv.conf的屬性設為i,可防止覆蓋)
file(顯示文件類型)
顯示文件的類型。
-L顯示符號鏈接文件的原文件
md5sum(加密)
計算和校驗文件的MD5值。文件內容相同的文件,MD5值一樣。
md5sum file > file.md5 #生成md5加密檢驗和
md5sum –c file.md5 #檢驗與文件是否一致
註意:
1) md5值是根據文件內容計算的
2) file.md5值只能檢驗file文件。如果file文件改了名,就不能檢驗
Linux常用命令———文件和目錄操作命令(18個)