ファイルを検索するbashスクリプトは、ファイル名が整数でなければならないと思います。

ファイルを検索するbashスクリプトは、ファイル名が整数でなければならないと思います。

ファイルを見つけて特定のフォルダにコピーできるように、テキストファイルからファイル名のリストを取得するスクリプトを作成しています。

スクリプトを実行すると、次のエラーが発生します。

./findfile.sh: 行 8: spam.txt: 構文エラー: 無効な算術演算子 ('.txt' タグ付きエラー)

Bashはこれが整数でなければならないと思う理由とそれを修正する方法は何ですか?

#!/bin/bash
#Find files from a list in a file and copy them to a common folder

mapfile -t filelist < filelist.txt

for i in ${filelist[i]}
do
    xargs find ~ -name '${filelist[i]}' | cp --parents ~/Documents/foundfiles/${filelist[i]}
done

ベストアンサー1

私はあなたが何をしたいのかわかりませんxargs。そしてあなたのcpに引数が欠けているようです。~/Documents/foundfiles/${filelist[i]}コピーしたいところがここです。到着

これは私に合ったコードです。

#!/usr/bin/env bash

mapfile -t filelist < ~/tmp/filelist.txt

for file in "${filelist[@]}"; do
    find ~ -name "$file" -exec cp --parents {} ~/tmp/dest/ \;
done

おすすめ記事