mv:无法统计错误:没有此类文件或目录错误

cha*_*lie 3 linux bash stat

我需要将目录的文件移动到另一个目录.当我使用以下程序时,我得到stat错误.

for i in dir1/*.txt_dir; do
mv $i/*.txt  dir2/`basename $i`.txt
done
Run Code Online (Sandbox Code Playgroud)

错误信息

mv: cannot stat `dir1/aa7.txt_dir/*.txt': No such file or directory
Run Code Online (Sandbox Code Playgroud)

sus*_*ray 6

通常,当扩展与任何文件名不匹配的glob时,它将保持不变.因此,您得到这样的结果:

$ rm .bak rm:无法删除` .bak':没有这样的文件或目录

为避免这种情况,我们需要更改nullglob变量的默认值.

    #BASH

    shopt -s nullglob

    for i in dir1/*.txt_dir; do
       mv $i/*.txt  dir2/'basename $i'.txt
    done
Run Code Online (Sandbox Code Playgroud)

在这里阅读更多相关信息:http://mywiki.wooledge.org/NullGlob

希望这可以帮助!


Joh*_*ica 4

mv $i/*.txt  dir2/`basename $i`.txt
Run Code Online (Sandbox Code Playgroud)

当 .txt 中没有文本文件时,这不起作用$i/。shell 将原始字符串传递"$i/*.txt"给其中mv未扩展的字符串,这会导致阻塞。*mv

尝试这样的事情:

for i in dir1/*.txt_dir; do
    find $i -name '*.txt' -exec mv {} dir2/`basename $i`.txt \;
done
Run Code Online (Sandbox Code Playgroud)