以下は、ユーザー指定のディレクトリのサブディレクトリのリストをエクスポートし、別のユーザー指定のディレクトリに同じ名前のディレクトリを作成する前にユーザーにプロンプトを表示する、より大きなスクリプトのスニペットです。
COPY_DIR=${1:-/}
DEST_DIR=${2}
export DIRS="`ls --hide="*.*" -m ${COPY_DIR}`"
export DIRS="`echo $DIRS | sed "s/\,//g"`"
if [ \( -z "${DIRS}" -a "${1}" != "/" \) ]; then
echo -e "Error: Invalid Input: No Subdirectories To Output\n"&&exit
elif [ -z "${DEST_DIR}" ]; then
echo "${DIRS}"&&exit
else
echo "${DIRS}"
read -p "Create these subdirectories in ${DEST_DIR}?" ANS
if [ ${ANS} = "n|no|N|No|NO|nO" ]; then
exit
elif [ ${ANS} = "y|ye|yes|Y|Ye|Yes|YE|YES|yES|yeS|yEs|YeS" ]; then
if [ ${COPYDIR} = ${DEST_DIR} ]; then
echo "Error: Invalid Target: Source and Destination are the same"&&exit
fi
cd "${DEST_DIR}"
mkdir ${DIRS}
else
exit
fi
fi
ただし、コマンドls --hide="*.*" -m ${COPY_DIR}
はリスト内のファイルも出力します。ディレクトリのみを出力するようにこのコマンドを言い換える方法はありますか? 試してみls -d
ましたが、それもうまくいきません。何か案は?