计算文件名字符,然后将这些文件复制到另一个目录

Posted

技术标签:

【中文标题】计算文件名字符,然后将这些文件复制到另一个目录【英文标题】:Count filename characters, then copy those files to another directory 【发布时间】:2018-10-08 18:37:46 【问题描述】:

我需要编写一个 bash 脚本,将文件复制到 dir2 中,该脚本将文件名中的字符数与作为脚本参数的给定 int 值相匹配。我尝试做某事,但我根本无法复制文件。

read number

list=`for file in *; do echo  -n "$file" | wc -m; done`

for file in $list

do

if [ $file -eq $number ]

then

cp file dir2

fi

done

【问题讨论】:

文件名是否包含扩展名,是否计入字符数? 不,扩展不需要进入字符数 【参考方案1】:

在您的代码中,list 是文件名长度列表,而不是文件名。所以 $file 只是一个数字。您还错过了$file 上的领先$

您不需要使用wc 程序,您可以使用$#name 获取变量名的长度。我认为你需要这样的东西:

while [[ $number != +([0-9]) ]]
do
    read -p "Enter number: " number
done

for file in *
do

    if (( $#file == $number ))
    then
        cp "$file" dir2
    fi

done

【讨论】:

我认为你的答案比我的好得多;我唯一的建议是使用双括号,也许可以使用read -r。 +1 如果我使用双括号,我会使用(( $#file == $number ))[[ ]] 用于模式匹配。 -r 仅在用户输入 \ 字符时才需要,这不合适,因为需要整数 - 无论有没有 -r,输入都是错误的。对$number 进行一些验证会很好。添加 是的,太糟糕了,你不能这样做$#file%*.*,这也可以只匹配没有扩展名的文件名。

以上是关于计算文件名字符,然后将这些文件复制到另一个目录的主要内容,如果未能解决你的问题,请参考以下文章

linux下怎么把一个文件复制到另一个文件夹?

将 .txt 复制到 int 数组,然后保存到另一个文件中

linux下怎么把一个文件复制到另一个文件夹?

如何将EXCEL中的多个表格复制到另一个表格中

linux怎样将一个目录下的文件复制到另一个目录下

linux怎么将一个文件移动到另一个目录下