切り捨てられた名前でディレクトリの名前を変更する

切り捨てられた名前でディレクトリの名前を変更する

私は複数のサブディレクトリを持っていますが、各ディレクトリの名前の末尾に時間が含まれています。これを削除したいです。見つけることができるショートカットがありますか?

.
├── ACRA
│   └── acra2017-12-25 16:01:57
├── Activiti
│   └── Activiti2017-05-02 17:15:37

到着

.
├── ACRA
│   └── acra2017-12-25
├── Activiti
│   └── Activiti2017-05-02

ベストアンサー1

find . -type d -name '*[0-2][0-9]:[0-5][0-9]:[0-5][0-9]' -exec sh -c '
    for d; do mv -- "$d" "${d% *}"; done
' findsh {} +

実際にスクリプトを実行する前に、echoとの間に追加して、正しい操作が適用されていることを確認できます。domvmv

  • -type d:ディレクトリのみを選択
  • -name '*[0-2][0-9]:[0-5][0-9]:[0-5][0-9]':名前の末尾に時間がある場合にのみ一致するグローバルパターン。
  • for d; do mv -- "$d" "${d% *}"; done:見つかったディレクトリごとにこのmvアクションを適用し、名前を変更します。ファイル名から${d% *}最後のスペースの後のすべての内容(および含む)を削除します。

おすすめ記事