我只是想批量修改文件的后缀,但它不起作用! 我使用的命令行如下:
ls *html | xargs -I{} echo "\`echo {} | sed 's/html/css/g'\`"
但是,当我刚使用ls *html
时,它会显示:
file1.html file2.html file3.html file4.html file5.html
使用了ls *html | sed 's/html/css/g'
,它显示了我的预期!
像这样:
file1.css file2.css file3.css file4.css file5.css
我在Mac OS上工作。有人能给我一些建议吗? 提前完成。
答案 0 :(得分:4)
因为反引号是双引号,所以它由shell立即执行,而不是由每个文件上的xargs执行。
结果与
相同ls *html | xargs -I{} echo "{}"
但是,如果使用单引号,则会遇到其他问题。你最终不得不做这样的事情:
ls *html | xargs -I{} sh -c 'echo `echo {} | sed '\''s/html/css/g'\''`'
但它变得一团糟,我们还没有实际重命名。
使用循环更好一点:
for file in *html; do
newname=${file%html}css
mv "$file" "$newname"
done
答案 1 :(得分:0)
使用GNU Parallel:
ls *html | parallel echo before {} after {.}.css