數據結構如下,我想將「lane-7」更改爲「lane-5」。 我正在考慮像這樣的命令,但它不起作用。使用bash更改文件名
find PATH -name "lane-7*" | xargs -i echo mv {} `echo {}|sed 's/lane-7/lane-5/'` | sh
Anyidea?由於
PATH/28/lane-7-22.fq
PATH/28/lane-7-21.fq
PATH/28/lane-7-18.fq
PATH/28/lane-7-24.fq
PATH/28/lane-7-23.fq
PATH/28/lane-7-19.fq
PATH/28/27/lane-7-22.fq
PATH/28/27/lane-7-21.fq
PATH/28/27/lane-7-18.fq
PATH/28/27/lane-7-24.fq
PATH/28/27/lane-7-23.fq
PATH/28/27/lane-7-19.fq
PATH/28/27/26/lane-7-22.fq
PATH/28/27/26/lane-7-21.fq
PATH/28/27/26/lane-7-18.fq
PATH/28/27/26/lane-7-24.fq
PATH/28/27/26/lane-7-23.fq
PATH/28/27/26/lane-7-19.fq
PATH/28/27/26/25/lane-7-22.fq
PATH/28/27/26/25/lane-7-21.fq
PATH/28/27/26/25/lane-7-18.fq
PATH/28/27/26/25/lane-7-24.fq
PATH/28/27/26/25/lane-7-23.fq
PATH/28/27/26/25/lane-7-19.fq
...
查看'rename'或'prename'命令(而不是'rename()'函數)。如果它存在於您的系統上,請使用它。如果沒有,找到它;它會更簡單。 (問題是在'find'開始之前執行反引號的命令!) – 2012-04-06 16:29:30
它是如何失敗的?如果你刪除尾部的'| sh',你應該看看命令是否正確,或者有什麼問題。 – zigdon 2012-04-06 16:30:51
這裏已經有一些很好的答案。只是一些提示。你不能管殼通信sh。您可以將它們寫入臨時文件並執行。使用find和xargs時,使用find -print0和xargs -0。然後它也可以與包含空格的文件名一起使用。否則你可能會搞砸了很多。 – Cougar 2012-04-06 16:44:53