我在不同的子目录中有几个文件。其中一些有一个只有一个“制表符”的制表符分隔符,如下所示:
1971 1 1 120
1971 1 2 148
1971 1 3 159,5
...
其他的有一个带有 7 个“制表符”的制表符分隔符,如下所示:
1971 1 1 120
1971 1 2 148
...
有没有办法对所有子目录的所有文件应用相同的“制表符”定界符?
我在不同的子目录中有几个文件。其中一些有一个只有一个“制表符”的制表符分隔符,如下所示:
1971 1 1 120
1971 1 2 148
1971 1 3 159,5
...
其他的有一个带有 7 个“制表符”的制表符分隔符,如下所示:
1971 1 1 120
1971 1 2 148
...
有没有办法对所有子目录的所有文件应用相同的“制表符”定界符?
我有几个具有以下命名风格的表:
INSTITUTE_MODEL_SCENARIO_RIVER.txt
例如:
wbm_gfdl_rcp8p5_mississippi.txt
wbm_hadgem_rcp8p5_mississippi.txt
wbm_miroc_rcp8p5_mississippi.txt
matsiro_gfdl_rcp4p5_mississippi.txt
matsiro_ipsl_rcp8p5_mississippi.txt
我想构建一个输出表,将文件名中包含INSTITUTE
和名称的那些分组。SCENARIO
为此,我有以下循环:
for institute in wbm matsiro
do
for scenario in rcp4p5 rcp8p5
do
paste "$institute"_*_"$scenario"* > "$hyd_model"_"$scenario".txt
done
done
不幸的是,在将表格附加到第一个表格时,我想去掉前三个列(以避免冗余)。我知道在命令行中这样做:
paste wbm_gfdl_rcp8p5_mississippi.txt <(cut -f4 wbm_hadgem_rcp8p5_mississippi.txt) <(cut -f4 wbm_miroc_rcp8p5_mississippi.txt) > output.txt
但是我没有成功地在for
循环中实现它。欢迎任何提示!
我有几个文件(表)命名为:institute _
model _
scenario _
river.txt
(institute,model,scenario和river是变量。)我想创建一个for
循环来识别每个具有相同institute名称且同时具有相同scenario名称的文件,以便附加每个不同的结果使用以下命令在同一输出文件中建模:
paste filename1.txt filename2.txt > output_file.txt
我知道如何for
在不同的文件夹而不是文件名上创建循环。有人有想法吗?
作为一个最小的例子,文件名可以如下所示:
wbm_gfdl_rcp8p5_mississippi.txt
wbm_hadgem_rcp8p5_mississippi.txt
matsiro_gfdl_rcp8p5_mississippi.txt
matsiro_ipsl_rcp4p5_mississippi.txt
matsiro_hadgem_rcp4p5_mississippi.txt
matsiro_miroc_rcp8p5_mississippi.txt
然后,我想将以下文件附加在一起:
wbm_gfdl_rcp8p5_mississippi.txt with
wbm_hadgem_rcp8p5_mississippi.txt
matsiro_ipsl_rcp4p5_mississippi.txt with
matsiro_hadgem_rcp4p5_mississippi.txt
matsiro_gfdl_rcp8p5_mississippi.txt with
matsiro_miroc_rcp8p5_mississippi.txt
我有几个表(制表符分隔)如下:
YEAR MONTH DAY RES
1971 1 1 1000
1971 1 2 1542
....
他们都呈现相同的三个第一列。为了将所有数据分组到一个大表中,我想附加所有表的最后一列。我目前使用paste
命令:
paste table1.txt table2.txt > table.txt
但是,我只想附加最后一列。任何人都知道如何做到这一点?
例如,table1.txt
如下:
1971 1 1 1000
1971 1 2 1541
1971 1 3 1245
table2.txt
如下:
1971 1 1 234
1971 1 2 457
1971 1 3 987
并且所需的输出应该是这样的table.txt
:
1971 1 1 1000 234
1971 1 2 1541 457
1971 1 3 1245 987
我有一个包含数千个文件的文件夹,这些文件遵循以下命名方案:
'institute_model_scenario_river.txt'
文件名的每个组成部分(机构、模型、场景、河流)都是变量。
然后,我想按每个变量的名称 exept'scenario'
和对这些文件进行排序和分类'river'
。
因此,应使用每个研究所名称创建一个相应的目录。这些目录应该由相应地命名为不同“模型”名称的子目录组成。
更准确地说,我想提供一个小例子,考虑以下文件:
wbm_gfdl_rcp4_mississippi.txt
matsiro_gfdl_rcp8_amazon.txt
wbm_miroc_rcp8_niger.txt
我想创建一个包含'wbm'
子目录'gfdl'
(包含以下文件'wbm_gfdl_rcp4_mississippi.txt'
)和'miroc'
(包含以下文件'wbm_miroc_rcp8_niger.txt'
)的目录。和一个'matsiro'
只有一个'gfdl'
子目录(包含'matsiro_gfdl_rcp8_amazon.txt'
)的目录。
考虑到大量的文件,我真的不知道从哪里开始!
我在以下路径中有一个目录名称列表
/home/list/list.txt
目录都在以下路径
/home/directory/
如何使用命令行删除列表中包含的目录?
我有以下类型的表:
ID date DailyFlow
a 1972-01-01 17.0265761797993
b 1972-01-02 17.200476457399
c 1972-01-03 17.2926436045271
d 1972-01-04 17.3900277599829
e 1972-01-05 17.5987080931028
f 1972-01-06 17.6334881486229
g 1972-01-07 17.7030482596626
...
我想将它们重新格式化如下:
YYYY DDD sim
1972 1 17.0265761797993
1972 2 17.200476457399
1972 3 17.2926436045271
1972 4 17.3900277599829
1972 5 17.5987080931028
1972 6 17.6334881486229
1972 7 17.7030482596626
1972 8 17.7204382874227
第一行包含在表中。这些文件是带有“制表符”分隔符的纯文本 (*.txt)。ID 列是一个虚拟列,我想去掉它!在我想要的输出中,DDD 列中的数字 (1,2,3,...) 应与相应年份的日期相符。
有没有人知道如何做到这一点(使用 bash)?谢谢!
我有几个目录(“amazon”、“niger”、...),其中有几个子目录(“gfdl”、“hadgem”、...),其中还有几个子目录(“rcp8p5” “,“rcp4p5”,...)。在这最后一个子目录中,我总是有两个文件夹(“historical”、“projected”),其中包含数千个具有相同框架的表。因此,我想连接这些表(存在于最后一个子目录的两个文件夹中),以便每次连接一个表时只有一个只有一个标题而不是标题的大表。有谁知道该怎么做?
我目前正在使用以下循环结构:
#!/bin/bash
# usage:cat_dat dirname
data_dir=/scratch/01/stevens/climate_scenario/river
for river in tagus
do
for gcm in gfdl-esm2m hadgem2-es
do
for scenario in rcp8p5 rcp4p5 rcp6p0 rcp2p6
do
find "${data_dir}/${river}/${gcm}/${scenario}" name \*.dat -exec cat {} + >> "${data_dir}/${river}/${gcm}/${scenario}.dat"
done
done
done
但我不能用那个摆脱标题!非常感谢任何帮助!谢谢!
我有几个文件夹(“亚马逊”、“尼日尔”、“莱茵河”……)。在他们每个人里面我有几个子文件夹(“gfdl”,“hadgem”,“ipsl”,...)。每个子文件夹由5个子文件夹组成(例如在“amazon”中,子文件夹“gfdl”由5个子文件夹'amazon_gfdl'、'amazon_gfdl1'、...、'amazon_gfdl5'组成);和其他子文件夹遵循相同的结构(例如,在“amazon”中,子文件夹“ipsl”由 5 个子文件夹“amazon_ipsl”、“amazon_ipsl1”、“amazon_ipsl2”、...直到“amazon_ipsl5”组成。
我有大量的文件夹遵循相同的组织框架。因此,我的问题如下:
如何组织每个文件夹和子文件夹,以便在每个子文件夹(“gfdl”、“hadgem”、“ipsl”、...)中创建 4 个新目录(“1”、“2”、“3” ", "4"); 然后将文件夹例如“amazon_gfdl”(已经存在于“gfdl”中)复制到每个新目录中,最后将“amazon_gfdl1”移动到新目录“1”,“amazon_gfdl2”移动到新目录“2”,等等!
我目前正在使用命令 cp 并在每个子文件夹中移动,但它并不是很有效,我可能需要额外的生命来结束这样的任务!因此,任何帮助或提示将不胜感激。非常感谢你!
我有一个文件夹(称为“文件夹”),由不同的子文件夹(“subfolder1”、“subfolder2”、...)组成。我想删除“文件夹”所有子文件夹中的文件列表,而所有子文件夹中都存在一些文件!
我目前使用:
while read file; do rm "$file"basz.dat; done < ~/folder/subfolder1/list.txt
不幸的是,这只对当前文件夹有效。如何对所有子文件夹应用相同的命令?
我在一个文件夹中有大量文件(例如 110011basz.dat、110012basz.dat、110013basz.dat...),调用folder
. 另一方面,我有一个与我需要移动到另一个文件夹的文件相关的列表(我们称之为folder2
)。此列表不显示文件的全名,而只显示前缀,例如 110011。
现在如何将这些文件移动到folder2
?
谢谢您的帮助!