[英]Bash command to remove leading zeros from all file names
我有一個目錄,其中包含一堆名稱如下的文件:
001234.jpg
001235.jpg
004729342.jpg
我想從所有文件名中刪除前導零,所以我將留下:
1234.jpg
1235.jpg
4729342.jpg
我一直在嘗試不同的sed配置,但我找不到合適的語法。 有沒有一種簡單的方法可以列出目錄中的所有文件,通過sed管道,然后將它們移動或復制到新文件名而不帶前導零?
for FILE in `ls`; do mv $FILE `echo $FILE | sed -e 's:^0*::'`; done
在Bash中,可能是您的默認登錄shell,不需要外部命令。
shopt -s extglob
for i in 0*[^0]; do mv "$i" "${i##*(0)}"; done
嘗試使用sed
,例如:
sed -e 's:^0*::'
完整循環:
for f in `ls`; do
mv $f $(echo $f | sed -e 's:^0*::')
done
也許不是最優雅但它會起作用。
for i in 0*
do
mv "${i}" "`expr "${i}" : '0*\(.*\)'`"
done
我根本不知道sed,但你可以使用find
一個列表:
find -type f -name *.jpg
所以用另一個答案可能看起來像
find . -type f -name *.jpg | sed -e 's:^0*::'
但我不知道該sed命令是否成立。
這是一個不需要sed
:
for x in *.jpg ; do let num="10#${x%%.jpg}"; mv $x ${num}.jpg ; done
請注意,僅當文件名是所有數字時,此方法才有效。 您還可以使用shell刪除前導零:
for a in *.jpg ; do dest=${a/*(0)/} ; mv $a $dest ; done
在Bash shell中,您可以:
shopt -s nullglob
for file in 0*.jpg
do
echo mv "$file" "${file##*0}"
done
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.