这是我在这个 stackexchange 上的第一个问题,我相信,随着我对 Linux 世界的进一步了解,还会有更多问题...
我在 shell 脚本中有一个 for 循环,可以批量将所有文件重命名为其原始名称的子字符串(最后 n 个字符)。
它会echo
在新行上每次迭代,最终生成所有文件的列表,但是我如何将该回显保持在单个/更新行上,以便它不会生成这个(有时很大的)列表?
echo "- Renaming file..."
for file in `find fldr -type f`
do
newf=$(echo $file | rev | cut -c -6 | rev)
mv -f $file fldr/$newpt
echo " * $file > $newf"
done
实际产量...
- Renaming file...
* file1a.txt > 1a.txt
* file2a.txt > 2a.txt
* file3a.txt > 3a.txt
* ...
期望输出...
- Renaming file...
* file3a.txt > 3a.txt
我希望看到一行始终变化以仅显示当前文件。
[奖励] 我如何让它也显示正在重命名的第 n 个文件?
- 3 files renamed...
* file3a.txt > 3a.txt
其中 n 是重命名文件的累计总数/计数。
答案1
只需将 echo 行更改为以下内容:
echo -ne "\r * $file > $newf "
末尾的空格清除了行中的旧输出。