2015-07-10 32 views
0

是否可以根據他們的字數,如下面的目錄重命名一批文件:重命名基於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"

+0

所以你想用正確的字數來替換文件名的最後部分('_'和'.NEW'之間)?或者只將該數字追加到文件名中? – Marki555

+0

是的,我試圖用_字數替換_和.NEW之間的最後部分 – Booboo

回答

2
for f in $folder1/*; do 
    cnt=$(wc -l $f) 
    printf -v num "%07u" ${cnt% *} 
    mv $f ${f%_*}_$num.NEW 
done 

(用於測試你可以把echomv之前,這樣就不會發生破壞。)

首先,我們分配wc命令的輸出爲可變$cnt(例如567 AMS_01_ex345_2012040000000_00.NEW)。然後我們只需要從中得到數字並用前導零格式化這個數字。 printf -v num將結果分配給該變量。

${parameter%word}在bash中會刪除匹配的後綴模式。在我們的第一個案例中,我們將從$cnt中刪除最後一個空格及其後的所有內容。在我們的第二種情況下,將從$f中刪除最後一個下劃線及其後的所有內容。

編輯:這是計數行,而不是詞。在問題本身中,我很困惑於使用wc -l。要計算單詞,請使用wc -w