我跑使用恢復.bak文件
perl -p -i.bak -e "..." *.sh dir/*.sh
一個Perl腳本,此創建的每個文件的副本一樣
script.sh
script.sh.bak
我現在想從.bak
文件恢復。我怎樣才能輕鬆做到這一點?
我跑使用恢復.bak文件
perl -p -i.bak -e "..." *.sh dir/*.sh
一個Perl腳本,此創建的每個文件的副本一樣
script.sh
script.sh.bak
我現在想從.bak
文件恢復。我怎樣才能輕鬆做到這一點?
for file in *.sh.bak dir/*.sh.bak; do cp "$file" "${file//.bak}"; done
或者你可以使用mv
代替cp
。
find -name '*.bak'|sed 's:.bak$::'|xargs -n 1 -I % cp %.bak %
如果你有包含換行符的文件名,這將不起作用。 –
感謝您的修復。
我一直在使用組合下面的代碼來修復的Joomla網站的 '的eval(BASE64_DECODE'
發現:。 grep的-lr --include = * PHP 「的eval(BASE64_DECODE」 ./
刪除: 的grep -lr --include = .PHP 「的eval(BASE64_DECODE」 ./ | xargs的SED -i.bak的/ EVAL(BASE64_DECODE [^];/\ N/G'
撤消: find -name'* .bak'| sed's:.bak $ ::'| xargs -n 1 -I%cp%.bak%
Tha如果你有很多文件,t不會工作 –
Op De Cirkel:你爲什麼說它不起作用?我相信shell可以處理任何數量的文件作爲通配符擴展的結果;這是當你試圖將一個長列表傳遞給另一個'ARG_MAX'可能咬你的進程時。 – tripleee
@OpDeCirkel:[''ARG_MAX'不適用於shell內建函數](http://stackoverflow.com/questions/6461227/limits-of-length-for-the-output-of-in-bash) –