假设有一个目录包含许多子目录bbb
,ccc
,x.txt
...
在这些目录中的一个(并且只有一个!)是一个名为mv */x.txt {target_dir}
的文件(但我不知道在哪个目录中)。
我想使用以下方法将该文件移动到备用目录:
No such file or directory
但是这不起作用:[ -f ]
作为一种解决方案,我最终循环遍历所有子目录,并检查文件是否在<img src="https://randomuser.me/api/portraits/thumb/men/57.jpg" class="a">
<img src="https://randomuser.me/api/portraits/thumb/women/14.jpg" class="a">
<img src="https://randomuser.me/api/portraits/thumb/women/7.jpg" class="a">
<br>
<div id="sectionB">
<img src="http://placehold.it/48" class="b">
<img src="http://placehold.it/48" class="b">
<img src="http://placehold.it/48" class="b">
</div>
<br>
<button id="reset">Reset</button>
,并移动文件一次。
但是,我想知道是否有更简单的解决方案?
答案 0 :(得分:3)
find . -type f -name x.txt -exec mv {} target_dir \;
答案 1 :(得分:1)
从 bash 联系页面:
globstar
If set, the pattern ** used in a pathname expansion context will match
all files and zero or more directories and subdirectories. If the
pattern is followed by a /, only directories and subdirectories match.
您可以尝试启用'globstar'选项,然后使用
shopt -s globstar
echo **/x.txt
如果echo找到文件,那么等效的
mv **/x.txt {target_dir}
注意: globstar 是一个仅限bash的选项(在bash 4.0中添加)如果你使用旧的版本(例如MAC上标准的bash 3),这将无效。