আমার কাছে একটি স্ক্রিপ্ট রয়েছে যা একাধিক সাবফোল্ডার এবং আর্কাইভের সমস্ত ফাইল ট্যারে অনুসন্ধান করে। আমার স্ক্রিপ্টটি হ'ল
for FILE in `find . -type f -name '*.*'`
do
if [[ ! -f archive.tar ]]; then
tar -cpf archive.tar $FILE
else
tar -upf archive.tar $FILE
fi
done
ফাইন্ড কমান্ড আমাকে নিম্নলিখিত আউটপুট দেয়
find . -type f -iname '*.*'
./F1/F1-2013-03-19 160413.csv
./F1/F1-2013-03-19 164411.csv
./F1-FAILED/F2/F1-2013-03-19 154412.csv
./F1-FAILED/F3/F1-2011-10-02 212910.csv
./F1-ARCHIVE/F1-2012-06-30 004408.csv
./F1-ARCHIVE/F1-2012-05-08 190408.csv
কিন্তু ফাইল পরিবর্তনশীল শুধুমাত্র পাথ প্রথম অংশ সঞ্চয় করে ./F1/F1-2013-03-19 এবং তারপর পরবর্তী অংশ 160413.csv ।
আমি read
কিছুক্ষণ লুপ ব্যবহার করে চেষ্টা করেছি ,
while read `find . -type f -iname '*.*'`; do ls $REPLY; done
তবে আমি নিম্নলিখিত ত্রুটি পেয়েছি
bash: read: `./F1/F1-2013-03-19': not a valid identifier
কেউ বিকল্প উপায় বলতে পারেন?
হালনাগাদ
নীচের উত্তরে প্রস্তাবিত হিসাবে আমি স্ক্রিপ্টগুলি আপডেট করেছি
#!/bin/bash
INPUT_DIR=/usr/local/F1
cd $INPUT_DIR
for FILE in "$(find . -type f -iname '*.*')"
do
archive=archive.tar
if [ -f $archive ]; then
tar uvf $archive "$FILE"
else
tar -cvf $archive "$FILE"
fi
done
আমি যে আউটপুট পাই তা হ'ল
./test.sh
tar: ./F1/F1-2013-03-19 160413.csv\n./F1/F1-2013-03-19 164411.csv\n./F1/F1-2013-03-19 153413.csv\n./F1/F1-2013-03-19 154412.csv\n./F1/F1-2012-09-10 113409.csv\n./F1/F1-2013-03-19 152411.csv\n./.tar\n./F1-FAILED/F3/F1-2013-03-19 154412.csv\n./F1-FAILED/F3/F1-2013-03-19 170411.csv\n./F1-FAILED/F3/F1-2012-09-10 113409.csv\n./F1-FAILED/F2/F1-2011-10-03 113911.csv\n./F1-FAILED/F2/F1-2011-10-02 165908.csv\n./F1-FAILED/F2/F1-2011-10-02 212910.csv\n./F1-ARCHIVE/F1-2012-06-30 004408.csv\n./F1-ARCHIVE/F1-2011-08-17 133905.csv\n./F1-ARCHIVE/F1-2012-10-21 154410.csv\n./F1-ARCHIVE/F1-2012-05-08 190408.csv: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
IFS=$'\n'
লুপের জন্য প্রতিটি লাইনকে পার্স করার জন্য আপনার আগে সেট করা উচিত বলে মনে হচ্ছে