
たとえば、番号 1 で始まるファイルをフォルダー番号 1 などに配置するには、次のコマンドを使用してそれぞれに対して実行できます。
find /home/ -name '1_*_*_*_*_*_*.nii' -exec cp '{}' /home/1 ';'
答え1
(1から100)のようなものですか?
for i in {1..100}; do
find /home/ -name "${i}_*_*_*_*_*_*.nii" -exec cp '{}' /home/${i} \;
done
答え2
ソース ディレクトリで次のスクリプトを実行します。
for name in *.nii ; # find all files with a pattern and process its
do
directory="${name%%_*}/"
if [ ! -d "$directory" ]; then mkdir "$directory" ; fi # make directory if not exist
cp "$name" "$directory" ; # copy file into the directory
done
は${name%%_*}
、最も長く一致するサフィックス パターンを削除します。この場合、最初の の前のすべてのシンボルが削除されます_
。name の置換の結果1_2_3.nii
は になりますcp 1_2_3.nii 1/
。
このソリューションは、必要なフォルダーを自動的に作成し、ファイルの範囲のプレフィックスを指定する必要がないため、より柔軟です。