Мне нужна помощь с помощью простого сценария, который я пишу. Сценарий принимает в качестве входных данных в каталог, содержащий файлы в подобных:Bash - объединить файлы в каталог, упорядоченный по дате
FILENAME20160220.TXT
FILENAME20160221.TXT
FILENAME20160222.TXT
...
скрипт должен иметь каталог в качестве входных данных, сцепить их в новый файл с именем:
FILENAME.20160220_20160222.TXT
Вышеуказанные имена файлов необходимо иметь «самую раннюю» дату «последней». Сценарий, который я написал до сих пор, - это, но он не создает нужный результат. Может ли кто-нибудь помочь мне возиться с ним?
declare FILELISTING="FILELISTING.TXT"
declare SOURCEFOLDER="/Cat_test/cat_test/"
declare TEMPFOLDER="/Cat_Test/cat_test/temp/"
# Create temporary folder
cd $SOURCEFOLDER
mkdir $TEMPFOLDER
chk_abnd $?
# Move files into temporary folder
mv *.TXT $SOURCEFOLDER $TEMPFOLDER
chk_abnd $?
# Change directory to temporary folder
cd $TEMPFOLDER
chk_abnd $?
# Iterate through files in temp folder and create temporary listing files
for FILE in $TEMPFOLDER
do
echo $FILE >> $FILELISTING
done
# Iterate through the lines of FILELISTING and store dates into array for sorting
while read lines
do
array[$i] = "${$line:x:y}"
((i++))
done <$FILELISTING
# Sort dates in array
for ((i = 0; i < $n ; i++))
do
for ((j = $i; j < $n; j++))
do
if [ $array[$i] -gt $array[$j] ]
then
t=${array[i]}
array[$i]=${array[$j]}
array[$j]=$t
fi
done
done
# Get first and last date of array and construct output filename
OT_FILE=FILENAME.${array[1]}_${array[-1]}.txt
# Sort files in folder
# Cat files into one
cat *.ACCT > "$OT_FILE.temp"
chk_abnd $?
# Remove Hex 1A
# tr '\x1A' '' < "$OT_FILE.temp" > $OT_FILE
# Cleanup - Remove File Listing
rm $FILE_LISTING
chk_abnd $?
rm $OT_FILE.temp
chk_abnd $?
Было бы хорошо, если бы вы могли задать более конкретный вопрос о конкретной части вашего скрипта, таких как «строка 10 не конкатенации, как я ожидал, я получаю сообщение об ошибке XYZ ». Подробнее см. На странице [mcve] s. –
Вы можете запустить свой код через http://www.shellcheck.net/. Когда я это делаю, отмечены одна явная ошибка и несколько меньших предупреждений. –
Добавьте 'set -x' в начало сценария и определите поток выполнения и соответствующим образом укажите соответствующий раздел. – Inian