0

こんにちはこれは簡単な質問ですが、解決策は今のところ私にはわかりません。

名前を変更したいフォルダ名を見つけることができ、フォルダ名を変更するコマンドは次のとおりです。mv

だから私が行くなら現在のディレクトリから

ls ~/relevant.directory.containing.directory.name.i.want.to.change

ディレクトリの名前を取得するのはsayと呼ばれますlorem-ipsum-v1-3

ただし、ディレクトリ名は将来変更される可能性がありますが、ディレクトリ内の唯一のディレクトリです:〜/relevant.directory.tai​​ning.directory.name.i.want.to.change

プログラムで次のような特定の名前に変更する方法correct-files

私は次のようなことをするだけで普通にそれを行うことができます

 mv lorem-ipsum-v1-3 correct-files

しかし、ディレクトリ名をコピーして貼り付ける必要がないように、これの自動化を開始したいと思います。

どんな助けもいただければ幸いです...

4

3 に答える 3

3

何かのようなもの:

find  . -depth -maxdepth 1 -type d | head -n 1 | xargs -I '{}' mv '{}' correct-files

1つのディレクトリのみを移動する必要がある限り、正常に機能するはずです。

于 2012-11-12T09:43:45.670 に答える
2

名前を変更するディレクトリのみが含まれていることが確実な場合はrelevant.directory.containing.directory.name.i.want.to.change、ワイルドカードを使用できます。

mv ~/relevant.directory.containing.directory.name.i.want.to.change/*/ ~/relevant.directory.containing.directory.name.i.want.to.change/correct-files

これは、bashブレース拡張を使用してさらに簡略化することもできます。

mv ~/relevant.directory.containing.directory.name.i.want.to.change/{*/,correct-files}
于 2012-11-12T09:36:27.420 に答える
1
cd ~/relevant.directory.containing.directory.name.i.want.to.change 
find . -type d -print | while read a ;
do
  mv $a correct-files ;
done

警告:

  • エラー処理なし
  • パラメータをmvに逆にして、whileループの代わりにxargsを使用できるようにする方法があるかもしれませんが、それは標準ではありません(私が知る限り)
  • パラメータ化されていません
  • サブディレクトリがある場合は機能しません。findコマンドの深度パラメーターは(繰り返しになりますが)標準ではありません。それらはGNUバージョンには存在しますが、Solarisには存在しないようです
  • おそらく他の人...
于 2012-11-12T09:37:10.973 に答える