名前に基づいてディレクトリを見つけ、新しいディレクトリに移動します。

名前に基づいてディレクトリを見つけ、新しいディレクトリに移動します。

「/example」フォルダに含まれる「*_jony」フォルダをすべて「/jony」という新しいディレクトリに移動したいと思います。いくつかの方法を試しましたが、成功しませんでした!助けを得るのが良いようです。ありがとうございます!

答え1

mv path_to_example_dir/*_jony /jony

答え2

頻繁に実行する必要がある場合は、スクリプトを使用して実行すると便利です。以下は、タスクを実行する迅速に組み立てられたBashスクリプトです。

#!/bin/sh
dir_str=$1
src_dir=$2
dest_dir=$3
ret_code=0
if [ ! -e $src_dir ] ; then
    echo "Could not find source directory $src_dir."
    let "ret_code += 1"
fi
if [ ! -e $dest_dir ] ; then
    echo "Could not find destination directory $dest_dir. (Use mkdir to create.)"
    let "ret_code += 2"
fi
if [ $ret_code -eq 0 ] ; then
    for dir_to_move in $src_dir/*$dir_str ; do
        echo "For '$dir_to_move':"
        cmd="mv $dir_to_move $dest_dir"
        echo "Executing: $cmd"
        $cmd
    done
fi
exit $ret_code

好みのエディタを使用してスクリプトを作成します。

それほど高度ではありませんが、移動したいディレクトリ名とソースおよびターゲットディレクトリにテキストを割り当てることができるため、ある程度の柔軟性が得られます。スクリプトを含むファイルの名前を「mv_dirs.sh」と指定し、それを実行して指定された目標を達成するには、次のように入力します。

sh mv_dirs.sh _jony/example/jony

この機能を実際に実装するには、通常のユーザーには通常は存在しないルート(/)ディレクトリへの書き込み権限が必要です。

関連情報