奇妙に聞こえるかもしれませんが、私のHTPCでは、フォルダ内の各個々のファイルをそのサブディレクトリ(ファイルと同じ名前を使用して)に移動するようにファイルを保存する方法を並べ替える必要があります。
IE - 現在のディレクトリは次のとおりです。
directory/
- a.file
- b.file
- c.file
私はそれを次のように変更したいと思います:
directory/
- a/
-- a.file
- b/
-- b.file
- c/
-- c.file
私はこれが非常に難しいとは思わないが、奇妙です。以前、誰かがこれを行うのを見たことはありません。 findとexecを使って行うことができると思いますが、私は戦闘員なので、これをよく理解できません。 。
事前に感謝します(または時間をかけてこの記事を読んでくれてありがとう)。
答え1
別の解決策:
#!/usr/bin/env bash
Dir="/tmp/directory/"
for f in "$Dir"/*;
do
SubDir="${f%.*}"
mkdir -- "$SubDir"
mv -- "${f}" "$SubDir/"
done
答え2
ファイルをパラメーターとして使用するシェル・スクリプトを作成します。
#!/bin/bash
for filepath; do
parentpath="${filepath%/*}"
if [ "$parentpath" != "$filepath" ]; then # $file contains a /
file="${filepath#"$parentpath"/}"
else
file="$filepath"
parentpath=""
fi
filename="${file%.*}"
if [ -z "$parentpath" ]; then
mkdir -p "$filename" && mv "$file" "$filename"
else
mkdir -p "${parentpath}/$filename" &&
mv "$filepath" "${parentpath}/$filename"
fi
done
./script *.ext1 *.ext2 *.ext3
大きすぎない、または数がfind ... -exec ./script {} +
多いファイルに対してこのスクリプトを呼び出すことができます。