簡體   English   中英

在單個 linux 命令 os 腳本中使用某些條件重命名多個文件夾中的所有文件。

[英]Rename all files in multiple folders with some condition in single linux command os script.

我有多個文件夾,其中包含多個文件。 我需要將這些文件重命名為與使用“_partN”前綴存儲文件的文件夾相同的名稱。

例如,

我有一個名為“new_folder_for_upload”的文件夾,其中有 2 個文件。 我需要轉換這兩個文件的名稱,例如,

new_folder_for_upload_part1 new_folder_for_upload_part2

我有很多像上面這樣的文件夾,它們有多個文件。 我需要按照上面的描述轉換所有文件名。

任何人都可以幫我找出一個 linux 命令或腳本來自動完成這項工作嗎?

假設bash shell,並假設您希望為每個子目錄重新啟動文件編號,並將所有文件移動到頂級目錄(留下空子目錄)。 格式化為腳本以便於閱讀:

find . -type f -print0 | while IFS= read -r -d '' file
do
    myfile=$(echo $file | sed "s@./@@")
    mydir=$(dirname "$myfile")
    if [[ $mydir != $lastdir ]]
    then
        NR=1
    fi
    lastdir=${mydir}
    mv "$myfile" "$(dirname "$myfile")_part${NR}"
    ((NR++))
done

或者作為一行命令:

find . -type f -print0 | while IFS= read -r -d '' file; do myfile=$(echo $file | sed "s@./@@"); mydir=$(dirname "$myfile"); if [[ $mydir != $lastdir ]]; then NR=1; fi; lastdir=${mydir}; mv "$myfile" "$(dirname "$myfile")_part${NR}"; ((NR++)); done

謹防。 這是armed ,並將對當前工作目錄中或下方的每個文件進行批量重命名/移動。 使用風險自負。

要刪除空子目錄:

find . -depth -empty -type d -delete

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM