ファイル名を変更し、親ディレクトリ名をファイル名に追加しますか?

ファイル名を変更し、親ディレクトリ名をファイル名に追加しますか?

ファイル名を変更し、親ディレクトリ名をファイルに追加しようとします(そして「Photos」という名前の新しいフォルダに移動します)。

私はこれをしようとしてきました。名前を変更するそしてミリメートル波ただし、次の例では、ディレクトリAにあるときにこれを行うのに問題があります。

$ pwd
/A
$ tree
.
├── 1.jpg
├── 2.jpg
└── 3.jpg

ただし、フォルダ階層の1つ以上のレベルで名前変更を実行すると正常に動作します。

$ pwd
/
$ tree
.
└── A
    ├── 1.jpg
    ├── 2.jpg
    └── 3.jpg

$ rename 's|(.*)/(.*)|$1/Photos/$1 - $2|' */*.jpg -p
$ tree
.
└── A
    └── Photos
        ├── A\ -\ 1.jpg
        ├── A\ -\ 2.jpg
        └── A\ -\ 3.jpg

例では、「A」ディレクトリにあるときにこれをどのように達成できますか?

ベストアンサー1

renameまあ、これは私が持っているよりもエキゾチックなので、まずsedを試してみてください。

Dir=$(basename "$PWD")
mkdir -p Photos
ls *.jpg|sed 's|\(.*\)|mv "\1" "Photos/'"$Dir"' - \1"|'    |sh

私はこれが次のように名前を変更すると解釈されると思います。

Dir=$(basename "$PWD")
rename 's|(.*)|Photos/'"$Dir"' - $1|' *.jpg -p

おすすめ記事