3
我想重新命名爲「富」到「欄中的」所有嵌套目錄 - 我已經試過沒有快樂如下:遞歸目錄SVN移動shell腳本
find */ -name 'foo' | xargs svn move {} 'bar' \;
感謝
我想重新命名爲「富」到「欄中的」所有嵌套目錄 - 我已經試過沒有快樂如下:遞歸目錄SVN移動shell腳本
find */ -name 'foo' | xargs svn move {} 'bar' \;
感謝
這將嘗試將每個foo
移動到pwd
/bar並通過svn move
太多參數。這是我會做:
find . -depth -type d -name 'foo' -print | while read ; do echo svn mv $REPLY `dirname $REPLY`/bar ; done
您可以卸下echo
有它實際上執行的操作。上述工作假設您的文件名中沒有空格。
你可以使用bash的使用順序後步行到手動訪問目錄樹:
#!/bin/bash
visit() {
local file
for file in $1/*; do
if [ -d "$file" ]; then
visit "$file";
if [[ $file =~ /foo$ ]]; then
svn move $file ${file%foo}bar;
fi
fi
done
}
if [ $# -ne 1 ]; then
exit
fi
visit $1
此代碼沒有任何無限循環檢測,而應在簡單的情況下工作。
您可能希望在'while read'之前對'find'結果進行排序--reverse。爲了避免在重命名它的父對象之後重命名一個嵌套的目錄**,並且在查找中還有一個'-type d'以實現良好的度量。 – 2010-06-15 14:52:37
@陳 - 很好的建議。爲了解決這個問題,增加了'-depth'來處理嵌套的case和'-type d'「。 – 2010-06-15 18:24:24