1、目錄操作函數
ls
(列出目錄內容)
- 用途:列出指定目錄中的文件和子目錄。
- 語法:
ls [選項] [路徑]
- 常用選項:
-l
:以長格式顯示文件詳細信息(權限、所有者、大小、時間等)。-a
:顯示隱藏文件(以.
開頭的文件)。-R
:遞歸列出子目錄內容。
# 列出當前目錄下的所有文件和子目錄
ls# 列出當前目錄的詳細信息(包含隱藏文件)
ls -la # 可簡寫成ll# 遞歸列出當前目錄及其子目錄的內容
ls -R
cd
(切換目錄)
- 用途:更改當前工作目錄。
- 語法:
cd [路徑]
- 常用路徑:
~
:用戶主目錄(如 /home/username
)。/
:根目錄。..
:上一級目錄。
# 切換到用戶主目錄
cd ~# 切換到根目錄
cd /# 切換到上一級目錄
cd ..
mkdir
(創建目錄)
- 用途:創建新目錄。
- 語法:
mkdir [選項] 目錄名
- 常用選項:
-p
:遞歸創建目錄(自動創建父目錄)。-p,--parents的縮寫,表示自動創建路徑中的父目錄(如果它們不存在)
# 創建單個目錄
mkdir new_folder# 遞歸創建多級目錄(如 a/b/c)
mkdir -p a/b/c
rmdir
(刪除空目錄)
- 用途:刪除空目錄。
- 語法:
rmdir [目錄名]
- 注意:目錄必須為空,否則會報錯。
# 刪除空目錄 example_dir
rmdir example_dir
rm
(刪除文件或目錄)
- 用途:刪除文件或目錄。
- 語法:
rm [選項] 文件或目錄
- 常用選項:
-r
:遞歸刪除目錄及其內容,recursive。-f
:強制刪除(不提示確認),force。
# 刪除文件 file.txt
rm file.txt# 遞歸刪除目錄及其內容(強制刪除)
rm -rf directory_name
cp
(復制文件或目錄)
- 用途:復制文件或目錄。
- 語法:
cp [選項] 源路徑 目標路徑
- 常用選項:
-r
:遞歸復制目錄。-i
:交互式復制(覆蓋前提示),interactive。
# 復制文件
cp source.txt destination.txt# 遞歸復制目錄
cp -r source_dir/ destination_dir/
mv
(移動或重命名文件/目錄)
- 用途:移動文件或目錄,或重命名文件/目錄。
- 語法:mv [選項] 源文件/目錄 目標路徑/新名稱
- 常用選項:
-v
:顯示詳細操作信息-i
:交互式操作(防止覆蓋)-n
:禁止覆蓋已存在的文件-u
:當源文件比目標文件新,或者目標文件不存在時,才執行移動操作-
-b
:覆蓋前備份原文件
# 1. 創建測試文件和目錄
mkdir -p test_dir1 test_dir2
touch test_dir1/file1.txt test_dir1/file2.txt test_dir1/file3.txt
echo "初始文件結構:"
ls -R test_dir1
# 輸出:
# test_dir1:
# file1.txt file2.txt file3.txt# ----------------------------
# 2. 移動單個文件
# 將 file1.txt 移動到 test_dir2
mv test_dir1/file1.txt test_dir2/
echo "移動單個文件后:"
ls -R test_dir2
# 輸出:
# test_dir2:
# file1.txt# ----------------------------
# 3. 重命名文件
# 將 file2.txt 重命名為 new_file.txt
mv test_dir1/file2.txt test_dir1/new_file.txt
echo "重命名文件后:"
ls test_dir1
# 輸出:
# file3.txt new_file.txt# ----------------------------
# 4. 移動多個文件
# 將多個文件移動到目標目錄
mv test_dir1/file3.txt test_dir1/new_file.txt test_dir2/
echo "移動多個文件后:"
ls -R test_dir2
# 輸出:
# test_dir2:
# file1.txt file3.txt new_file.txt# ----------------------------
# 5. 使用 -i 防止覆蓋(交互式)
# 如果目標文件存在,會提示是否覆蓋
# 示例:嘗試覆蓋 test_dir2 中的 file1.txt
mv -i test_dir1/file1.txt test_dir2/file1.txt
# 輸出示例:
# mv: overwrite 'test_dir2/file1.txt'? y# ----------------------------
# 6. 使用 -v 顯示詳細操作
# 顯示移動過程的詳細信息
mv -v test_dir1/file1.txt test_dir2/
# 輸出示例:
# 'test_dir1/file1.txt' -> 'test_dir2/file1.txt'# ----------------------------
# 7. 使用 -n 禁止覆蓋
# 如果目標文件存在,跳過操作
mv -n test_dir1/file1.txt test_dir2/
# 輸出:無(因為目標文件已存在)# ----------------------------
# 8. 使用通配符批量移動
# 移動所有 .txt 文件
touch test_dir1/a.txt test_dir1/b.txt
mv test_dir1/*.txt test_dir2/
echo "通配符批量移動后:"
ls -R test_dir2
# 輸出示例:
# test_dir2:
# a.txt b.txt file1.txt file3.txt new_file.txt# ----------------------------
# 9. 使用 -b 覆蓋前備份
# 覆蓋前備份原文件(備份文件名加 ~)
mv -b test_dir2/file1.txt test_dir2/backup.txt
echo "覆蓋前備份示例:"
ls -R test_dir2
# 輸出示例:
# test_dir2:
# backup.txt file1.txt~ a.txt b.txt file3.txt new_file.txt# ----------------------------
# 10. 結合 find 移動特定文件
# 查找并移動所有 .log 文件
touch test_dir1/sample.log
find test_dir1 -name "*.log" -exec mv {} test_dir2/ \;
echo "find + mv 示例:"
ls -R test_dir2
# 輸出示例:
# test_dir2:
# sample.log backup.txt file1.txt~ a.txt b.txt file3.txt new_file.txt# ----------------------------
# 11. 移動目錄
# 移動整個目錄及其內容
mv test_dir1 test_dir2/
echo "移動目錄后:"
ls -R test_dir2
# 輸出示例:
# test_dir2:
# sample.log backup.txt file1.txt~ a.txt b.txt file3.txt new_file.txt test_dir1# test_dir2/test_dir1:
# (空目錄,因為所有文件已被移動)
find
(查找文件或目錄)
- 用途:在目錄樹中查找文件或目錄。
- 語法:
find [路徑] [表達式]
- 常用選項:
-name
:按名稱查找。-type
:按類型查找(f
表示文件,d
表示目錄?