私のディレクトリは次のように設定されます。
dir 1
001
11-20-2001-RT SIMULATION-57976
002
11-20-2001-RT SIMULATION-30560
003
08-24-1998-RT SIMULATION-72882
待って、約250項目があります。私の目標は、文字列を含む各サブディレクトリをRT SIMULATION
別のディレクトリに移動することです。つまりdir 2
、名前を対応する親ディレクトリに変更することです。だから探しています。
dir 2
001
(*11-20-2001-RT SIMULATION-57976
上記の例と一致する必要があります)002
003
これまで、RT SIMULATION
このコードを使用してこれらのディレクトリを見つけることができます。for i in $(find /dir1/*/* -name "*RT SIMULATION*" -type d); echo "$i"; done;
dir 2
これで、上記の親ディレクトリに基づいてこれらのディレクトリを移動して名前を変更する必要があります。助けやアドバイスはありますか?
ベストアンサー1
そしてzsh
:
autoload -Uz zmv
zmv 'dir 1/(*)/*RT SIMULATION*(#q/)' 'dir 2/$1'
を使用し、bash
GNUシステムを想定すると、次のことができます。
(
shopt -s nullglob
ret=0
for dir in 'dir 1'/*/*'RT SIMULATION'*; do
[[ -d $dir && ! -L $dir ]] || continue
parent=${dir%/*}; parent=${parent##*/}
mv -iT -- "$dir" "dir 2/$parent" || ret=$?
done
exit "$ret"
)
ところで、参照してください検索結果を繰り返すのはなぜ悪い習慣ですか?あなたの。for i in $(find...