我有一个包含大约1000个文件的文件夹,我想根据他们的重要父文件夹对它们进行分组。
我做了ls- R > updated.txt
来获取文件夹和文件的原始设置。
updated. txt
看起来像这样:
./Rhodococcus_RHA1:
NC_008268.fna
NC_008269.fna
NC_008270.fna
NC_008271.fna
./Rhodoferax_ferrireducens_T118:
NC_007901.fna
NC_007908.fna
./Rhodopseudomonas_palustris_BisA53:
NC_008435.fna
./Rhodopseudomonas_palustris_BisB18:
NC_007925.fna
./Rhodopseudomonas_palustris_BisB5:
NC_007958.fna
./Rhodopseudomonas_palustris_CGA009:
NC_005296.fna
NC_005297.fna
因此,通过查看此文件,我知道哪些文件进入了哪个文件夹。包含所有1000个文件的文件夹如下所示:
results_NC_004193.fna.1.ebwt.map
results_NC_004307.fna.1.ebwt.map
results_NC_004310.fna.1.ebwt.map
results_NC_004311.fna.1.ebwt.map
results_NC_004337.fna.1.ebwt.map
results_NC_004342.fna.1.ebwt.map
results_NC_004343.fna.1.ebwt.map
results_NC_004344.fna.1.ebwt.map
依旧......
您可以看到所有1000个文件的文件名都取决于文件夹设置中的原始名称(如果这是解释它的好方法)。
我想使用原始设置将这些results_XXXXXXXX
文件移动到文件夹(必须创建新文件夹)。所以它应该是这样的:
./Rhodococcus_RHA1: (this is a folder)
results_NC_008268.fna.1.ebwt.map
results_NC_008269.fna.1.ebwt.map
results_NC_008270.fna.1.ebwt.map
results_NC_008271.fna.1.ebwt.map
./Rhodoferax_ferrireducens_T118:
results_NC_007901.fna.1.ebwt.map
results_NC_007908.fna.1.ebwt.map
我真的不知道怎么做...也许是某种mov
命令?我很感激这个问题的帮助。
答案 0 :(得分:1)
从包含这1000个文件的文件夹中运行以下命令。 path / to / original / files是原始文件的路径(你做的那个ls -R)。你应该得到一个mv命令列表。验证其中几个以确认这些是正确的。如果是这样,添加|接下来命令并重新运行它以执行这些命令。如果您没有1000文件文件夹中的所有相应文件,您将获得将返回“找不到文件”的mv命令,可以忽略或通过管道传送到/ dev / null。这假设您始终在原始文件夹中有一个文件,以便它知道文件的移动位置。如果没有,那些1000个文件中的一些将不会被移动。和往常一样,在这之前做好备份。
find path/to/original/files -type f | awk -F"/" '{ path=$0; sub($NF, "", path); printf("mv results_%s.1.ebwt.map \"%s\"\n", $NF, path);}'