csvファイルで参照されているファイルのリストを新しいフォルダに移動またはコピーする方法

csvファイルで参照されているファイルのリストを新しいフォルダに移動またはコピーする方法

csvファイルにリストされているファイルを特定のディレクトリにコピーするシェルスクリプト(OSX)を作成したいと思います。 csvファイルの各行から引用符を削除する必要があります。

私の試み

for i in $(cat myfile.csv)
  temp="${$i%\"}"
  temp="${temp#\"}"

do
  cp foldername/$temp foldername/subfoldername
done

次のエラーが発生します。

./mfcsv.sh: line 2: syntax error near unexpected token `temp="${$i%\"}"'
./mfcsv.sh: line 2: `  temp="${$i%\"}"'

ベストアンサー1

2つのエラーがあります:

  1. 無効なループ構文はdo2行目にする必要があります。
  2. 代替構文が正しくありません。i前にドル記号は必要ありません。

この試み:

#!/bin/bash

for i in $(cat myfile.csv)
do
  temp="${i%\"}"
  temp="${temp#\"}"

  cp foldername/$temp foldername/subfoldername
done

ただし、ファイル名にスペースが含まれていると失敗します。以下のスクリプトは空白でも機能します。

#!/bin/bash

while read i;
do
  temp="${i%\"}"
  temp="${temp#\"}"

  cp "foldername/$temp" "foldername/subfoldername"
done < myfile.csv

おすすめ記事