フォルダ内のファイルの移動

フォルダ内のファイルの移動

ユーザー入力を受け取り、ユーザーが指定したフォルダー(以前に存在しなかったフォルダー)に特定のファイルを移動しようとしています。これについてスクリプトを書いたが、うまくいきません。

read month
mv file210.txt /Users/PrashastKumar/Documents/latestFiles/$month/

これを実行した後、次のエラーが発生します。

mv: rename file210.txt to /Users/PrashastKumar/Documents/latestFiles/Dec/: No such file or directory

答え1

フォルダが存在しないため、作成する必要があります。

#!/bin/sh

read month

folder="/Users/PrashastKumar/Documents/latestFiles/$month"

mkdir -p "$folder"

mv file210.txt "$folder"

スクリプトはフォルダを作成し、mkdir -pすでに存在する場合は失敗せずに使用し、必要に応じて中間フォルダを作成します。

その後、ファイルが移動されます。


新しいフォルダを作成する前に、確認でスクリプトを展開します。

#!/bin/sh

read month

folder="/Users/PrashastKumar/Documents/latestFiles/$month"

if [ ! -d "$folder" ]; then
    printf 'Folder "%s" does not exist. Create it [y/n]: ' "$folder" >&2
    read
    case "$REPLY" in 
        [yY]*)  mkdir -p "$folder" ;;
        *) exit 1
    esac
fi

mv file210.txt "$folder"

関連情報