亲爱的脚本专家, 作为脚本的新手,我非常感谢你的帮助。 我有一个简单的任务: 我有一组目录dir1 dirxy目录... 每个目录中都有一些文件,但我只想复制其中一个文件,比如一个以A ...开头的文件
在搜索此页面时,我找到了一个用于列出子目录的脚本:
for i in *
do # Line breaks are important
if [ -d $i ] # Spaces are important
then
"do some task"
fi
done
做一些任务是个问题...... 我想将一个用A *声明的文件复制到另一个目录并将其重命名为B_nameofparentdirectory
非常感谢你 彼得
答案 0 :(得分:1)
您可以通过以斜杠结尾来创建仅匹配glob的目录,这样您就可以编写脚本
for i in */; do
"do some task"
done
在每个目录中,您可以使用break
语句使内部循环仅处理第一个文件:
for i in */; do
for f in "${i}"A*; do
cp "$f" "$dest/B_$dest"
break
done
done
这将导致循环继续处理每个外部目录,但在每个目录中只会处理名为A *的第一个文件。
也就是说,您可以使用find
命令直接完成此操作:
find . -mindepth 2 -maxdepth 2 -type f -name 'A*' -execdir cp {} "$dest/B_$dest" \;
答案 1 :(得分:0)
使用find
添加类似于其他答案的实现for file in $(find . -name "A*" -type f)
do
cp ${file} ${destDir}/B_${destDir}
break
done
您可以使用find来列出当前目录中的以A开头的所有文件。它的子目录。
find . -name "A*" -type f