[root@localhost ~]# ls *.bak
test2.bak test3.bak test9.bak test.bak test.txt.bak
.bak
すべてのファイルのすべての内容を削除する方法は?これが私の現在の試みです
ls *.bak|xargs -t -i mv {}.bak {}
しかし、これは私には効果がありません。ここに回避策はありますか?
答え1
ループは次のことを行う必要があります(POSIXに似たシェルで):
for f in *.bak; do
mv -- "$f" "${f%.*}"
done
一行:
for f in *.bak; do mv -- "$f" "${f%.*}"; done
答え2
使用rename
注文する:
rename 's/\.bak$//' *.bak
's/\.bak$//'
-真珠式は、次に終わるすべてのファイル名と一致し、.bak
拡張子を削除します。
答え3
すべてのプラットフォームで動作する必要があるもの:
for i in *.bak
do
mv $i `echo $i | sed 's/\.bak$//'`
done
答え4
#!/bin/bash
for val in \`ls *.bat`
do
mv $val `echo $val | cut -f1 -d'.'`
done