檔案操作

管理檔案與目錄的基本操作

basename

從路徑中提取文件名

basename /path/to/file.txt
# 輸出: file.txt

bat

現代化 cat 替代品,支援語法高亮、行號與 git 整合

# 檢視文件(自動語法高亮)
bat config.yaml

# 顯示行號與 git 變更
bat --style=numbers,changes file.py

# 只顯示純文字(無裝飾)
bat --plain file.txt

# 比較兩個文件
bat --diff file1.txt file2.txt

# 顯示不可見字符
bat --show-all script.sh

cd

切換目錄,支持的目錄符號:

  • . : 當前目錄
  • .. : 父目錄
  • ~ : home 目錄
  • - : 上一次的目錄
cd ..
cd ~
cd -

cp

複製文件和目錄

# 複製目錄
cp -r my_dir /tmp/my_dir1

# 複製文件
cp new_file.txt copy_file.txt
cp [file ...] [destination]

dirname

顯示路徑中的目錄部分

dirname $0

eza

現代化 ls/tree 替代品,支援彩色輸出、圖標與 git 狀態

# 基本列表(彩色輸出)
eza

# 長格式含圖標
eza -l --icons

# 顯示 git 狀態
eza -l --git

# 樹狀顯示
eza --tree --level=2

# 只顯示目錄
eza -D

# 按大小排序
eza -l --sort=size

# 完整資訊(含 git、時間)
eza -la --git --icons --time-style=long-iso

fd

現代化 find 替代品,語法更簡潔、速度更快

# 搜尋文件名
fd pattern

# 搜尋特定副檔名
fd -e py

# 搜尋目錄
fd -t d dirname

# 搜尋隱藏文件
fd -H pattern

# 指定搜尋深度
fd -d 2 pattern

# 執行命令(類似 find -exec)
fd -e log -x rm {}

# 搜尋並排除目錄
fd pattern -E node_modules

file

判斷文件類型

file test.jpg

find

搜尋文件

# 基本搜尋
find / -name "filename"
find / -type d -name "<directory-name>"

# 使用正則表達式
find . -name "*.so*"

# 搜尋並執行命令
find . -type f -name "file1.go" -exec dirname {} \;

ln

創建文件連結

# 創建軟連結
ln -s [source] [destination]
ln -s /usr/local/lib/libz.so.1 /usr/lib64/libz.so.1

locate

快速查找文件

locate libfreetype.so.6

ls

列出目錄內容

# 檢查 OS 版本
ls /etc/*release*

# 以人性化方式列出
ls -lh

# 列出所有文件(包含隱藏)
ls -al

# 列出 inode 信息
ls -li

lsof

列出打開的文件

lsof -n

mkdir

創建目錄

# 創建單個目錄
mkdir <folder_name>

# 創建多層目錄
mkdir -p <folder_name>/<subfolder>/<subfolder>

mv

移動/重命名文件

# 重命名文件
mv new_file.txt sample_file.txt

# 移動文件
mv [file ...] [destination]

# 提示覆蓋
mv -i file1 file2

ncdu

互動式磁碟使用分析器,快速找出佔用空間的大檔案

# 分析當前目錄
ncdu

# 分析指定目錄
ncdu /var/log

# 排除特定目錄
ncdu --exclude .git

# 匯出結果
ncdu -o output.json /home

# 讀取匯出的結果
ncdu -f output.json

# 唯讀模式(禁止刪除)
ncdu -r /

互動式操作:

  • ↑/↓ : 導航
  • Enter : 進入目錄
  • d : 刪除選中項
  • n : 按名稱排序
  • s : 按大小排序
  • q : 退出

pwd

顯示當前工作目錄

pwd

rm

刪除文件或目錄

# 基本語法
rm [OPTION]... [FILE]...

# 遞歸刪除目錄
rm -r [DIRECTORY NAME]

# 刪除前提示
rm -ri

rmdir

刪除空目錄

rmdir [OPTION]... DIRECTORY...

scp

安全複製

# 複製本地文件到遠程
scp -i test.pem -v "C:\Users\User\Downloads\api-server.jar" ec2-user@52.74.112.210:/tmp

# 從遠程複製文件到本地
scp -i test.pem ec2-user@[ip]:/home/java/api/server.log [download_destination]

# 複製到 EC2
scp -i [.pem_file_path] -v [Your_jar_path] ec2-user@[ip]:/tmp

touch

創建空文件或更新時間戳

# 創建新文件
touch new_file.txt

tree

顯示目錄結構

tree
tree -L 2  # 限制深度