是否可以根據他們的字數,如下面的目錄重命名一批文件:重命名基於Word文件數
對於所有的文件folderA
,得到他們的字數,然後將其重命名根據他們的字數
所以AMS_01_ex345_2012040000000_00.NEW
,字計數這個文件是,它會被重新命名爲AMS_01_ex345_2012040000000_00.NEW
for x in $folder1 do exec grep -v "\"" $x | 'wc -l' > "$x.NEW"
是否可以根據他們的字數,如下面的目錄重命名一批文件:重命名基於Word文件數
對於所有的文件folderA
,得到他們的字數,然後將其重命名根據他們的字數
所以AMS_01_ex345_2012040000000_00.NEW
,字計數這個文件是,它會被重新命名爲AMS_01_ex345_2012040000000_00.NEW
for x in $folder1 do exec grep -v "\"" $x | 'wc -l' > "$x.NEW"
for f in $folder1/*; do
cnt=$(wc -l $f)
printf -v num "%07u" ${cnt% *}
mv $f ${f%_*}_$num.NEW
done
(用於測試你可以把echo
的mv
之前,這樣就不會發生破壞。)
首先,我們分配wc
命令的輸出爲可變$cnt
(例如567 AMS_01_ex345_2012040000000_00.NEW
)。然後我們只需要從中得到數字並用前導零格式化這個數字。 printf -v num
將結果分配給該變量。
${parameter%word}
在bash中會刪除匹配的後綴模式。在我們的第一個案例中,我們將從$cnt
中刪除最後一個空格及其後的所有內容。在我們的第二種情況下,將從$f
中刪除最後一個下劃線及其後的所有內容。
編輯:這是計數行,而不是詞。在問題本身中,我很困惑於使用wc -l
。要計算單詞,請使用wc -w
。
所以你想用正確的字數來替換文件名的最後部分('_'和'.NEW'之間)?或者只將該數字追加到文件名中? – Marki555
是的,我試圖用_字數替換_和.NEW之間的最後部分 – Booboo