如何使用 shell 脚本创建数据并将其插入新文件
How to create and insert data into a new file using shell script
我正在做一个 autosys 作业,它创建一个新文件并将文件名插入其中。目前我正在使用以下基于文件名模式工作的命令。不幸的是,此命令正在提取具有相似文件名的错误文件。所以我想创建一个命令,将 hardocded 数据插入到文件中。
当前逻辑:
find /home/temp/ -maxdepth 1 -name '*_File_Data.csv' -printf '%f\n' > /home/temp/File_Data.txt
当前输出:
abcd_File_Data.csv
不应被选中。
$ cat File_Data.txt
a_File_Data.csv
b_File_Data.csv
c_File_Data.csv
d_File_Data.csv
abcd_File_Data.csv
预期输出:
abcd_File_Data.csv
未被选中。
$ cat File_Data.txt
a_File_Data.csv
b_File_Data.csv
c_File_Data.csv
d_File_Data.csv
请让我知道如何实现这种情况。
提前致谢!!
看起来有点傻,但试试这个:
echo "a_File_Data.csv" > /home/temp/File_Data.txt
echo "b_File_Data.csv" >> /home/temp/File_Data.txt
echo "c_File_Data.csv" >> /home/temp/File_Data.txt
echo "d_File_Data.csv" >> /home/temp/File_Data.txt
注意第一个使用单个“>”的回显——它将首先清空目标文件;随后的回声将附加。
可能更好:不要重复 /home/temp/...,而是设置一个变量:
dest=/home/temp/File_Data.txt
echo "..." >> $dest
这将使脚本更易于维护。
请按原样尝试此命令
find /home/temp -maxdepth 1 -regex '^\/home\/temp\/[a-z]_File_Data\.csv$' -printf '%f\n' > /home/temp/File_Data.txt
感谢大家对这个问题的投入。
尝试使用以下命令,它按预期工作:
find /home/temp/{a_File_Data.csv,b_File_Data.csv,c_File_Data.csv,d_File_Data.csv} |xargs -n 1 basename > /home/temp/File_Data.txt
不确定我是否必须在我的命令中使用“-maxdepth 1”,但即使子目录中有相似的文件名,上述命令也有效。
我正在做一个 autosys 作业,它创建一个新文件并将文件名插入其中。目前我正在使用以下基于文件名模式工作的命令。不幸的是,此命令正在提取具有相似文件名的错误文件。所以我想创建一个命令,将 hardocded 数据插入到文件中。
当前逻辑:
find /home/temp/ -maxdepth 1 -name '*_File_Data.csv' -printf '%f\n' > /home/temp/File_Data.txt
当前输出:
abcd_File_Data.csv
不应被选中。
$ cat File_Data.txt
a_File_Data.csv
b_File_Data.csv
c_File_Data.csv
d_File_Data.csv
abcd_File_Data.csv
预期输出:
abcd_File_Data.csv
未被选中。
$ cat File_Data.txt
a_File_Data.csv
b_File_Data.csv
c_File_Data.csv
d_File_Data.csv
请让我知道如何实现这种情况。 提前致谢!!
看起来有点傻,但试试这个:
echo "a_File_Data.csv" > /home/temp/File_Data.txt
echo "b_File_Data.csv" >> /home/temp/File_Data.txt
echo "c_File_Data.csv" >> /home/temp/File_Data.txt
echo "d_File_Data.csv" >> /home/temp/File_Data.txt
注意第一个使用单个“>”的回显——它将首先清空目标文件;随后的回声将附加。
可能更好:不要重复 /home/temp/...,而是设置一个变量:
dest=/home/temp/File_Data.txt
echo "..." >> $dest
这将使脚本更易于维护。
请按原样尝试此命令
find /home/temp -maxdepth 1 -regex '^\/home\/temp\/[a-z]_File_Data\.csv$' -printf '%f\n' > /home/temp/File_Data.txt
感谢大家对这个问题的投入。
尝试使用以下命令,它按预期工作:
find /home/temp/{a_File_Data.csv,b_File_Data.csv,c_File_Data.csv,d_File_Data.csv} |xargs -n 1 basename > /home/temp/File_Data.txt
不确定我是否必须在我的命令中使用“-maxdepth 1”,但即使子目录中有相似的文件名,上述命令也有效。