我試圖重命名目錄中的多個文件。目的是刪除尾部的_bkp擴展名。 我想到的是如下所示,但大家都知道,這不會奏效,但你明白了。任何幫助?用單個bash命令重命名目錄中的多個文件
find -iname "*.sql_bkp" -exec mv {} sed -e 's/\_bkp//g' {} \;
或
find -iname *.sql_bkp -exec mv {} $(sed -e 's/\_bkp//g' {}) \;
我試圖重命名目錄中的多個文件。目的是刪除尾部的_bkp擴展名。 我想到的是如下所示,但大家都知道,這不會奏效,但你明白了。任何幫助?用單個bash命令重命名目錄中的多個文件
find -iname "*.sql_bkp" -exec mv {} sed -e 's/\_bkp//g' {} \;
或
find -iname *.sql_bkp -exec mv {} $(sed -e 's/\_bkp//g' {}) \;
您可以使用:
find . -iname '*.sql_bkp' -exec bash -c 'echo mv "$1" "${1%_bkp}"' - {} \;
當你滿意的輸出,就在mv
介意解釋「$ {1%_bkp}」 - {}部分? –
''$ {1%_bkp}「''從'$ 1'的末尾移除'_bkp'。 ' - {}'將2個參數傳遞給'bash -c'命令行.Dummy參數'-'填充了'$ 0','{}'填充了'$ 1' – anubhava
刪除echo
試試這個 -
$find -iname "*.sql_bkp" -exec basename {} _bkp \;
OR
$for i in *.sql_bkp; do mv "$i" "$(basename "$i" _bkp)";done
不,你必須給一個目錄下找到? – 123
@ 123 GNU find假定'.'如果你沒有指定一個 –
@EricRenouf啊對,不知道,謝謝。 – 123