ディレクトリプレフィックス名に基づいてファイルを見つけてディレクトリにコピーする

ディレクトリプレフィックス名に基づいてファイルを見つけてディレクトリにコピーする

質問:

誰かがシェルスクリプトでこれを行う最も簡単な方法を示すことはできますか?

ディレクトリ名を含む次のリストがあります。

head -3 list.txt

271_Lsasrv_dll_MS04-011
350_Util_Manager_MS04-019
351_POSIX_MS04-020

cd既存のディレクトリにあるlist.txtの各エントリに対して、次の操作を行います。

cd 271_Lsasrv_dll_MS04-011/

プレフィックス番号を取得し、/usr/share/exploitdb/パスで検索します。

find /usr/share/exploitdb/ -name  271.*
/usr/share/exploitdb/platforms/windows/local/271.c

既存のディレクトリにファイルをコピーする

cp /usr/share/exploitdb/platforms/windows/local/271.c .

親ディレクトリに戻ります。

cd ..

オペレーティングシステム情報:

uname -a
(Debian 4.6.4-1kali1)

私は何を試みたか。

ディレクトリを作成するのは簡単だと思いました。

for fldr in $(cat list.txt); do mkdir -p $fldr; done

...しかし、切り取りと変数の割り当てなどを使用する最良の方法はわかりません。経験豊富なLinuxユーザーがこの問題をどのように処理するかを学ぶことをお勧めします。

ベストアンサー1

試してみて改善が必要な場合はお知らせください。

while read line; 
do
  mkdir -p "${line}"
  prefix=`echo "${line}" | cut -d'_' -f1`
  find /usr/share/exploitdb/ -name  "${prefix}".* -exec echo {} "${line}/" \;
done < list.txt

コマンド出力が大丈夫に見えたらechocpfind

おすすめ記事