2016-11-17 9 views
-2

MacOS上のターミナルを使って、ディレクトリとファイル名の両方の名前で単語を再帰的に置きたい。たとえば、角型のアプリケーションがあり、モジュール名はarticle、ファイル名はすべて、ディレクトリ名はarticleという単語が含まれています。私は既にコード内のリンゴで記事を置き換えるための検索と置換を行っています。今私はファイル構造と同じことをしたいので、ファイル名とディレクトリの両方が同じ慣習を共有します。ターミナルを使って再帰的にファイル名とディレクトリ名を置き換えることはできますか?

最新のYeomanジェネレータを使用して新しいファイルを作成しようとしましたが、問題があるようです。別の方法は、ディレクトリを複製してすべてのファイルの名前を変更することです。これはかなり時間がかかります。

答えて

0

は明らかに私はこの問題

https://github.com/meanjs/generator-meanjs/issues/79

に遭遇するだけではないよ、それは次のスクリプト

var=$1 
if [ -n "$var" ]; then 
    CRUDNAME=$1 
    CRUDNAMEUPPERCASE=`echo ${CRUDNAME:0:1} | tr '[a-z]' '[A-Z]'`${CRUDNAME:1} 
    FOLDERNAME=$CRUDNAME's' 
    # Create new folder 
    cp -R modules/articles modules/$FOLDERNAME 
    # Do the find/replace in all the files 
    find modules/$FOLDERNAME -type f -print0 | xargs -0 sed -i -e 's/Article/'$CRUDNAMEUPPERCASE'/g' 
    find modules/$FOLDERNAME -type f -print0 | xargs -0 sed -i -e 's/article/'$CRUDNAME'/g' 
    # Delete useless files due to sed 
    rm modules/$FOLDERNAME/**/*-e 
    rm modules/$FOLDERNAME/**/**/*-e 
    rm modules/$FOLDERNAME/**/**/**/*-e 
    # Rename all the files 
    for file in modules/$FOLDERNAME/**/*article* ; do mv $file ${file//article/$CRUDNAME} ; done 
    for file in modules/$FOLDERNAME/**/**/*article* ; do mv $file ${file//article/$CRUDNAME} ; done 
    for file in modules/$FOLDERNAME/**/**/**/*article* ; do mv $file ${file//article/$CRUDNAME} ; done 
else 
    echo "Usage: sh rename-module.sh [crud-name]" 
fi 

で動作するようになりました

関連する問題