したがって、現在のパスは次のようになります。
../CAMERA3/serialnum/2016-12-19/001/dav/07/07.02.53-07.03.14[M][0@0][0].dav
最終目標:
../CAMERA3/2016-12-19_07.02.53-07.03.14.dav
だから私は基本的に、次のようにいくつかのディレクトリ名とファイル名の一部を抽出するためのforループを見つけようとしています。
mv ../$dir1/$dir2/$dir3/$dir4/$dir5/$dir6/$filenameportion[M][0@0][0].dav ../$dir1/$dir3_$filenameportion.dav
ベストアンサー1
ついに使うべきだった米。少し醜いが動作します。
find /mnt/test -name '*.dav' -exec sh -c 'for filename do
if [[ $(basename "$filename") != C*.dav ]];then
find "$filename" -type f -execdir ~/bin/rnm -y "$filename" -ns '/pd05/_/pd03/_/n/.dav' \;
fi
done' find-sh {} \;
find /mnt/test -name '*.dav' -exec sh -c 'for filename do
rename "[M][0@0][0]" "" "$filename"
done' find-sh {} \;
find /mnt/test -name '*.dav' -type f -execdir sh -c 'mv "$@" ./../../../../..' find-sh {} \;
PS:はい、私はユーザーです。最初はゲストとして投稿し、メールリンクに沿ってアカウントを作成しました。驚くほど自動ではありません。バックスラッシュの混乱により申し訳ありません。ファイルをWindowsノートブックにコピーした後、公開用にもう一度変更することを忘れていました。
アップデート1:出力を見つけるためにループを削除しました。