使用 xargs -a 文件重命名文件

Rename file using xargs -a file

我有几个文件:

test1.log
test2.log
test3.log
test.txt

test.txt 包含:

./test1.log
./test2.log
./test3.log

我希望能够使用我的:

test.txt

xargs -a test.txt ......

重命名

 test1.log
 test2.log
 test3.log 

到 .txt 文件:

 test1.txt
 test2.txt
 test3.txt

有没有办法通过重命名、sed、sub 或 awk 来做到这一点?

我在这个 link:

找到了我的答案

http://www.commandlinefu.com/commands/view/8368/bulk-rename-files-with-sed-one-liner

这不是我想要做的,但它有效:

ls *.log | sed -e 'p;s/.log/.txt/' | xargs -n2 mv

如果您的 sed 技能不那么强,或者您想以一般方式多次使用名称的基础,则以下内容将去掉扩展名,然后只允许从不带扩展名的文件名构造命令。

ls **/*.txt | sed 's/\.txt$//' | xargs -n1 -i mv {}.txt {}.md

**/.txt 使用 bash shopt globstar 来包含子目录。如果您没有启用 globstar shopt,则可以将“ls **/.txt”替换为 find 命令的实例。