私はLinuxでシェルスクリプトを始めました。
ソースには多くのファイルがありますdirectory
。directory
フォルダにファイル名(正確に一致しない)を含める必要があるターゲットにファイルを移動する必要があります。
前任者: 私のソースディレクトリ
/var/backup/
logstash-avi-core.spec
logstash-core.spec
ftpcore.spec
マイターゲットディレクトリ
/path
/logstash-avi-core-2.2.0
/logstash-core-2.1.1
/ftpcore.spec-2.0
参照に基づいてスクリプトを作成しましたが、スクリプトは機能しません。ファイルがターゲットディレクトリにコピーされませんでした。
for path in /var/backup/${1}
do
if [ -f "${path}" ]
then
filename="$(<<< "${file}" awk -F'.')"
if [ -n "${filename}" ]
then
cp "${path}" "/path/${1}/"
fi
fi
done
事前にありがとう
コメントの説明に基づいて更新:"/path/${1}/"
cp "${path}" "/path/${1}/"でターゲットディレクトリを参照しました。ソースディレクトリからファイル名を読み取り、ファイル名を含むフォルダ名を検索し、ファイルを一致するフォルダに移動する必要があります。これが私の要求です。
アップデート2 ファイル名とディレクトリ名を変更しました。
ベストアンサー1
私が正しく理解した場合は、各ファイル名の最初の文字を文字ではなく最初の文字までインポートし、ターゲットディレクトリの最初の文字まで最初の文字まで一致させることです_
。各パターンは次のように仮定されます。 、次のことができます。
for file in /var/backup/*; do
fname=${file##*/};
fname=${fname/.*/};
cp -v "$file" /path/"$fname"*/;
done
結果:
$ ls /path/*
/path/adbs_32:
adbs.spec
/path/dmsx_ty_32:
dmsx.spec
/path/fomru_ts_td-45:
fomru32.spec
/path/gend_monitor:
gend.spec