一、文件查看與內容操作
?1.?cat
- ?作用:查看文件內容(一次性輸出全部內容)。
- ?常用選項:
-n
:顯示行號。-b
:僅對非空行顯示行號。
- ?示例:
cat file.txt # 查看文件內容 cat -n file.txt # 顯示行號 cat file1.txt file2.txt > combined.txt # 合并文件
?2.?more
?/?less
- ?作用:分頁查看文件內容(支持上下翻頁)。
- ?區別:
more
:只能向下翻頁。less
:支持上下翻頁和搜索(按?/
?輸入關鍵詞)。
- ?示例:
more large_file.log less large_file.log # 推薦使用(功能更強大)
?3.?head
?/?tail
- ?作用:查看文件開頭或結尾部分內容。
- ?常用選項:
-n <行數>
:指定顯示的行數(如?-n 10
)。-f
(僅?tail
):實時追蹤文件更新(常用于監控日志)。
- ?示例:
head -n 5 file.txt # 查看前5行 tail -n 10 file.txt # 查看最后10行 tail -f app.log # 實時追蹤日志
?二、文本處理與過濾
?1.?grep
- ?作用:文本搜索工具(基于正則表達式)。
- ?常用選項:
-i
:忽略大小寫。-v
:反向匹配(顯示不包含關鍵詞的行)。-r
:遞歸搜索目錄中的文件。-E
:支持擴展正則表達式(等同于?egrep
)。
- ?示例:
grep "error" app.log # 搜索包含 "error" 的行 grep -i "warning" app.log # 忽略大小寫搜索 "warning" grep -r "TODO" /project/src # 遞歸搜索目錄中的文件
?2.?sort
- ?作用:對文本行排序。
- ?常用選項:
-n
:按數值排序(默認按字符串)。-r
:逆序排序(從大到小)。-k <列號>
:按指定列排序(如?-k 2
?按第二列)。
- ?示例:
sort file.txt # 默認按字母順序排序 sort -n data.txt # 按數值排序 sort -k 3 -r data.txt # 按第三列逆序排序
?3.?uniq
- ?作用:去除相鄰的重復行(通常與?
sort
?配合使用)。 - ?常用選項:
-c
:統計重復次數。-d
:僅顯示重復的行。
- ?示例:
sort file.txt | uniq # 去重(需先排序) sort file.txt | uniq -c # 統計每行重復次數
?4.?cut
- ?作用:按列提取文本內容。
- ?常用選項:
-d <分隔符>
:指定列分隔符(默認是 Tab)。-f <列號>
:指定提取的列(如?-f 1,3
)。
- ?示例:
cut -d ',' -f 1,3 data.csv # 提取 CSV 文件的第一和第三列
?5.?sed
- ?作用:流編輯器(批量替換、刪除、插入文本)。
- ?常用命令:
s/old/new/g
:全局替換。d
:刪除行。
- ?示例:
sed 's/foo/bar/g' file.txt # 替換所有 "foo" 為 "bar" sed '/^#/d' config.conf # 刪除所有以 `#` 開頭的行(注釋)
?6.?awk
- ?作用:強大的文本分析工具(按列處理數據)。
- ?常用語法:
{print $N}
:打印第 N 列。BEGIN
?/?END
:處理前/后執行的操作。
- ?示例:
awk '{print $1, $3}' data.txt # 打印第一和第三列 awk -F ',' '{sum += $2} END {print sum}' data.csv # 對第二列求和
?三、文件查找與統計
?1.?find
- ?作用:查找文件或目錄(支持多種條件)。
- ?常用選項:
-name <模式>
:按文件名匹配(支持通配符?*
)。-type <類型>
:按文件類型查找(f
?文件,d
?目錄)。-mtime <天數>
:按修改時間查找(如?-mtime +7
?表示 7 天前)。-exec <命令> {} \;
:對查找到的文件執行命令。
- ?示例:
find /home -name "*.txt" # 查找所有 .txt 文件 find /var/log -type f -mtime +30 # 查找 30 天前修改過的文件 find . -size +10M -exec rm {} \; # 刪除當前目錄下大于 10MB 的文件(慎用!)
?2.?du
- ?作用:統計目錄或文件的磁盤使用情況。
- ?常用選項:
-h
:人性化顯示大小(如 KB/MB/GB)。-s
:僅顯示總大小(不顯示子目錄)。--max-depth=N
:限制統計的目錄層級。
- ?示例:
du -sh /home # 統計 /home 目錄的總大小 du -h --max-depth=1 /var/log # 顯示 /var/log 下各子目錄的大小
?3.?wc
- ?作用:統計文件的行數、單詞數、字節數。
- ?常用選項:
-l
:僅統計行數。-w
:僅統計單詞數。-c
:僅統計字節數。
- ?示例:
wc -l access.log # 統計文件行數(日志條目數) wc -w essay.txt # 統計單詞數
?四、文件操作與管理
?1.?cp
- ?作用:復制文件或目錄。
- ?常用選項:
-r
:遞歸復制目錄。-i
:覆蓋前提示確認。-v
:顯示復制進度。
- ?示例:
cp file.txt backup/ # 復制文件到目錄 cp -r dir1/ dir2/ # 遞歸復制目錄
?2.?mv
- ?作用:移動文件或目錄(也可用于重命名)。
- ?示例:
mv old.txt new.txt # 重命名文件 mv file.txt dir/ # 移動文件到目錄
?3.?rm
- ?作用:刪除文件或目錄。
- ?常用選項:
-r
:遞歸刪除目錄。-f
:強制刪除(不提示確認)。
- ?示例:
rm file.txt # 刪除文件 rm -rf dir/ # 強制遞歸刪除目錄(慎用!)
?4.?ln
- ?作用:創建文件鏈接。
- ?常用選項:
-s
:創建符號鏈接(軟鏈接)。
- ?示例:
ln -s /path/to/file link_name # 創建軟鏈接
?五、文件權限與屬性
?1.?chmod
- ?作用:修改文件權限。
- ?常用語法:
- 數字模式:
chmod 755 file.sh
- 符號模式:
chmod u+x file.sh
- 數字模式:
- ?示例:
chmod 644 file.txt # 設置權限為 rw-r--r-- chmod +x script.sh # 添加可執行權限
?2.?chown
- ?作用:修改文件所有者。
- ?示例:
chown user:group file.txt # 修改所有者和所屬組
?六、文件壓縮與歸檔
?1.?tar
- ?作用:打包和解壓文件。
- ?常用選項:
-c
:創建歸檔文件。-x
:解壓歸檔文件。-v
:顯示操作過程。-z
:使用 gzip 壓縮/解壓。-j
:使用 bzip2 壓縮/解壓。
- ?示例:
tar -czvf archive.tar.gz dir/ # 打包并壓縮目錄 tar -xzvf archive.tar.gz # 解壓 .tar.gz 文件
?2.?gzip
?/?gunzip
- ?作用:壓縮/解壓文件(生成?
.gz
?文件)。 - ?示例:
gzip file.txt # 壓縮文件(生成 file.txt.gz) gunzip file.txt.gz # 解壓文件
?3.?zip
?/?unzip
- ?作用:壓縮/解壓 ZIP 文件。
- ?示例:
zip archive.zip file1.txt file2.txt # 壓縮文件 unzip archive.zip # 解壓 ZIP 文件
?七、其他實用命令
?1.?diff
- ?作用:比較兩個文件的差異。
- ?示例:
diff file1.txt file2.txt # 顯示差異
?2.?file
- ?作用:檢測文件類型。
- ?示例:
file unknown.bin # 檢測文件類型(如 ELF 可執行文件、JPEG 圖片等)
?3.?touch
- ?作用:創建空文件或更新文件時間戳。
- ?示例:
touch new_file.txt # 創建空文件 touch existing.txt # 更新文件訪問和修改時間
?八、組合命令示例
?1. 統計日志中不同狀態碼的出現次數
cat access.log | awk '{print $9}' | sort | uniq -c
?2. 查找當前目錄下所有?.cpp
?文件并備份到?backup
?目錄
find . -name "*.cpp" -exec cp {} backup/ \;
?3. 實時監控日志中的錯誤信息
tail -f app.log | grep -i "error"
linux查找指定目錄下最大的文件和文件夾?
. 查找最大的文件
使用?find
?命令結合?du
?和?sort
,按文件大小排序:
# 查找指定目錄(如 /path/to/dir)下最大的前10個文件
find /path/to/dir -type f -exec du -h {} + 2>/dev/null | sort -rh | head -n 10
參數解釋:
-type f
:僅搜索文件。-exec du -h {} +
:計算每個文件的大小(人性化顯示,如 KB/MB/GB)。sort -rh
:按人類可讀的數值逆序排序(從大到小)。head -n 10
:顯示前10個結果。
?2. 查找最大的文件夾
使用?du
?命令直接計算目錄大小并排序:
# 查找指定目錄(如 /path/to/dir)下最大的前10個文件夾
du -h /path/to/dir --max-depth=1 2>/dev/null | sort -rh | head -n 11
參數解釋:
--max-depth=1
:僅顯示直接子目錄(設為?2
?可包含子目錄的子目錄)。head -n 11
:顯示前11行(包含父目錄自身統計)。