Modifying replace string in xargs

前端 未结 8 1352
梦毁少年i
梦毁少年i 2021-01-30 01:43

When I am using xargs sometimes I do not need to explicitly use the replacing string:

find . -name \"*.txt\" | xargs rm -rf

In oth

8条回答
  •  被撕碎了的回忆
    2021-01-30 02:11

    If you're allowed to use something other than bash/sh, AND this is just for a fancy "mv"... you might try the venerable "rename.pl" script. I use it on Linux and cygwin on windows all the time.

    http://people.sc.fsu.edu/~jburkardt/pl_src/rename/rename.html

    rename.pl 's/^(.*?)\.(.*)$/\1-new_stuff_here.\2/' list_of_files_or_glob
    

    You can also use a "-p" parameter to rename.pl to have it tell you what it WOULD HAVE DONE, without actually doing it.

    I just tried the following in my c:/bin (cygwin/windows environment). I used the "-p" so it spit out what it would have done. This example just splits the base and extension, and adds a string in between them.

    perl c:/bin/rename.pl -p 's/^(.*?)\.(.*)$/\1-new_stuff_here.\2/' *.bat
    
    rename "here.bat" => "here-new_stuff_here.bat"
    rename "htmldecode.bat" => "htmldecode-new_stuff_here.bat"
    rename "htmlencode.bat" => "htmlencode-new_stuff_here.bat"
    rename "sdiff.bat" => "sdiff-new_stuff_here.bat"
    rename "widvars.bat" => "widvars-new_stuff_here.bat"
    

提交回复
热议问题