最終的には、各サブディレクトリの各CSVから行3-53を取得する必要があります。
次のファイルから次の行をインポートしました(「cat」は必ずしも必要ではありません)。
cat /[path]/[file].csv | head -53 | tail -51
私が必要とするファイルは次のとおりです(「検索」はい必須):
find /[path]/ -name "*.csv"
問題は、2つを接続できないことです。誰かが私を正しい方向に押してもらえますか?
答え1
この試み:
find /path/to/file/ -maxdepth 1 -type f -name '*.csv' -print0 | while read -d '' -r file; do sed -n '3,53p' $file; done
このオプションは、print0
ファイル名に存在できるすべての空白文字を処理します。
答え2
私が正しく理解したなら、次のことが役に立つと思います。
スクリプト/ライン:
$ for csv_files in $(find /home/t1/ -name "*.csv"); do echo $csv_files ; done
出力:
/home/t1/t4/t4.csv
/home/t1/t1/t1.csv
/home/t1/t2/t2.csv
/home/t1/t3/t3.csv
echo
代わりに、2番目のコマンドを挿入できます。cat $csv_files | head -53 | tail -51
完成度を上げるために、次のecho
コード行を次のように置き換えました。
$ for csv_files in $(find /home/t1/ -name "*.csv"); do cat $csv_files | head -53 | tail -51; done
答え3
findselfを使用してこれを行うことができます。
find path -type f -name '*.csv' \
-exec sh -c 'for f; do head -n 53 "$f" | tail -n 51; done' _ {} +