次のディレクトリ構造の名前を変更しようとします。
Tests Directory
├── Test1 Directory
│ ├── 2 - 1. Data
│ ├── 3 - 2. Data
│ ├── 4 - 3. Data
│ ├── 5 - 4. Data
│ ├── 6 - 5. Data
├── Test2 Directory
│ ├── 2 - 1. Data
│ ├── 3 - 2. Data
│ ├── 4 - 3. Data
│ ├── 5 - 4. Data
├── Test3 Directory
│ ├── 2 - 1. Data
│ ├── 3 - 2. Data
│ ├── 4 - 3. Data
│ ├── 5 - 4. Data
│ ├── 6 - 5. Data
そして
Tests Directory
├── Test1 Directory
│ ├── 1. Data
│ ├── 2. Data
│ ├── 3. Data
│ ├── 4. Data
│ ├── 5. Data
├── Test2 Directory
│ ├── 1. Data
│ ├── 2. Data
│ ├── 3. Data
│ ├── 4. Data
├── Test3 Directory
│ ├── 1. Data
│ ├── 2. Data
│ ├── 3. Data
│ ├── 4. Data
│ ├── 5. Data
fd -t d -x rename 's/^(\d+ -)\s(\d+.)/$1/'
, Test1
& Test2
- を実行するとTest3
動作します。
Test
しかし、すべてのディレクトリで実行する必要がないようにコマンドを使用したいと思います。
頑張りました
% find . -type d -exec rename 's/^(\d+ -)\s(\d+.)/$1/' {} \;
% find . -type d -exec rename 's/^(\d+ -)\s(\d+.)/$1/' {} ";"
何も動作しません。どうですか?
詳細を追加してください。
% find . -maxdepth 2 -type d -execdir echo {} \;
./.
./Test1 Directory
./2 - 1. Data
./3 - 2. Data
./4 - 3. Data
./5 - 4. Data
./6 - 5. Data
./Test2 Directory
./2 - 1. Data
./3 - 2. Data
./4 - 3. Data
./5 - 4. Data
./Test3 Directory
./2 - 1. Data
./3 - 2. Data
./4 - 3. Data
./5 - 4. Data
./6 - 5. Data
ポリスチレン、ディレクトリ名にスペースがあります。
答え1
あなたの試みにいくつかの問題がありますが、find
正しい道を行っています。
find
名前が変更されたディレクトリ自体が検索されないように、再帰深度を制限します。この-maxdepth
オプションを使用し、このオプションが必要であることに注意してください。今後テストするが後ろにルート(例えば、.
および間-type d
)。コマンドは名前を変更したいディレクトリのすぐ上にあると仮定するため、代わりにその
rename
タスクを使用する必要があります。他のほとんどのタスクと同様に、このタスクは最上位ディレクトリ(たとえば、あなたの場合)で行われ、フルパスを渡します。一番上から「見つかった」項目までファイル名だけが表示されるわけではありません(つまり、あなたの場合は渡された項目です)。両方の問題が解決されました。execdir
exec
exec
find
.
exec
./Test1/2. - 1. Data
execdir