Unix/Linux x86_64需求:从根目录执行命令拼接文件名与首行
实现指定目录下文件与首行拼接输出的Unix命令
要不用切换到目标目录/bin/etc/target,同时实现和cd进去后执行原命令相同的效果,有两种简单可行的方式:
方法一:使用子shell模拟目录切换
通过子shell先切换到目标目录,再执行原awk命令,执行完后自动回到当前工作目录,完全复刻在目标目录内执行的效果:
(cd /bin/etc/target && awk '{print FILENAME "," $0; nextfile}' *)
方法二:直接处理指定路径文件并提取纯文件名
如果不想切换目录,可以直接指定文件路径,并用awk的字符串处理功能去掉路径前缀,只保留文件名:
awk '{print gensub(/.*\//, "", 1, FILENAME) "," $0; nextfile}' /bin/etc/target/*
注:
gensub是GNU awk的特性,如果使用POSIX标准awk,可替换为split(FILENAME, arr, "/"); print arr[length(arr)] "," $0; nextfile
两种方法执行后,都会输出类似以下格式的内容:
file1.csv,header,2 file2.csv,header,3 file3.csv,header,4
内容的提问来源于stack exchange,提问作者sunny
相关产品推荐
相关产品推荐

