2015-06-20 89 views

回答

0
for original_name in *.data; do 
    # determine new file name from original: 
    # remove zeroes and change extension. 
    new_name=$(echo "$original_name" | sed -e 's/_0*/_/g' -e s'/.data$/.png/') 
    mv "$original_name" "$new_name" 
done 
+0

很好的解決方案,但我西港島線需要這個像 循環'到* _ * _ * _ *文件。數據 做 MV「$ {文件} 「」$ {file/.data/.png}「 done ' –

+0

好的,我編輯了我的答案來循環多個文件。希望有所幫助。 –

+0

感謝這項工作 –

1

使用此

ls * | sed -e 'p;s/_0*/_/g' | xargs -n2 mv 
+0

注意,它會遍歷當前目錄中的所有文件,並刪除其名稱中的零 –

+0

它返回錯誤 -sh:/ bin/ls:參數列表太長 –

+0

這不被鼓勵。在處理文件名時,'ls'是一個不好的工具。正確的方法是'*'或'find。 -print0 | xargs -0'或'find。 -exec'模式。 – HuStmpHrrr