繁体   English   中英

将所有文件夹和文件移动到 Linux 目录中具有相同主题名称的文件夹中

[英]move all the folders and files to the folder with the same subject name in the directory Linux

例如,我在同一目录中有 001、001_ses-1、001_ses-2 文件夹和文件 001_lg1.lsf、001_recon1.lsf、001_trac1.lsf。 我有数百个科目。 我想将文件夹:001_ses-1、001_ses-2 和文件:001_lg1.lsf、recon1_001.lsf 和 trac1_001.lsf 移动到 001 主文件夹。 我该怎么做呢?

list={001, 011, 023, 059, ..... 102}
for i in list; do rm i* i; done 

到目前为止,我没有任何线索。 需要一些帮助来解决它!

根据评论中提供的信息,识别目标文件夹有两种可能性:

A) 创建一个手动列表。 这是在 Bash 和兼容的 Linux shell 中完成的方式:

DEST_LIST=( "001" "002" "003" "004" ) 

for DEST in ${DEST_LIST[@]}; do
    mv "${DEST}_"* "${DEST}"

B) 创建模式的正则表达式并使用find
我将使用您评论中的模式作为示例:

PREFIX_PATTERN="[0-9]\{3\}_S_[0-9]\{3\}\.[0-9]"

for DEST in $(find . -type d -regex ".*/${PREFIX_PATTERN}"); do
    PREFIX=`expr "${DEST}" : ".*\(${PREFIX_PATTERN}\)"`
    mv "${PREFIX}_"* "${DEST}"

包含expr命令的额外行从find命令返回的完整文件夹路径中提取干净的文件夹名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM