使用 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 命令的实例。
我有几个文件:
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 命令的实例。