我有一個包含多個文件的目錄。每個文件可以有不同的前綴和後綴,但都包含六位數字。我想批量重命名文件,使其中一個數字發生改變(特別是第二個)。批量重命名文件以更改數字
因此,例如
*?2????* -> *?5????*
第二位始終是所有文件是相同的,但一切可以不同。更復雜的是,一些文件有兩個六位數字。在兩個數字都需要更新的情況下,
例如
*?2????*?2????* -> *?5????*?5????*
任何指針?
我有一個包含多個文件的目錄。每個文件可以有不同的前綴和後綴,但都包含六位數字。我想批量重命名文件,使其中一個數字發生改變(特別是第二個)。批量重命名文件以更改數字
因此,例如
*?2????* -> *?5????*
第二位始終是所有文件是相同的,但一切可以不同。更復雜的是,一些文件有兩個六位數字。在兩個數字都需要更新的情況下,
例如
*?2????*?2????* -> *?5????*?5????*
任何指針?
試試這個:
for file in *?2????*; do
if [[ $file =~ [0-9]{6} ]]; then
echo mv "$file" "$(sed 's/2/5/g' <<< "$file")"
else
echo mv "$file" "$(sed 's/[0-9]/5/2' <<< "$file")"
fi
done
的sed
命令將通過5
取代數字的第二個發生如果這適合您的需求,只是從我的片段刪除echo
命令。
我認爲OP說,在兩個6位數字串的情況下,兩個串都需要更新(並按照他的例子,以不同的方式)。 – Floris 2013-03-12 14:17:26
抱歉打字。是的,兩個字符串都需要更新,但以相同的方式 - 兩個字符串中的第二個數字最初都是相同的,並且需要更改爲相同的數字。 – 2013-03-12 14:19:44
看到我編輯的POST – 2013-03-12 14:22:35
討論'rename'命令還有無數的其他問題,這裏的要求似乎過於具體,不允許任何普遍適用的答案比「遍歷文件並重命名帶有匹配文件名的答案」更具體。 – chepner 2013-03-12 14:02:57