ポールを改善してみてください回答:

ポールを改善してみてください回答:

したがって、現在のパスは次のようになります。

../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:出力を見つけるためにループを削除しました。

おすすめ記事