Linux shell脚本读取目录名并在另一个目录中创建同名的.txt文件
我有两个目录,一个叫做clients,另一个叫做test,在这个叫做clients的目录中,我有一些文件夹,我需要一个shell脚本来读取clients中文件夹的名称,并在文件夹test中创建同名的.txt文件,我对shell非常陌生,我不知道怎么做,你们能帮帮我吗?试着用Linux shell脚本读取目录名并在另一个目录中创建同名的.txt文件,linux,shell,Linux,Shell,我有两个目录,一个叫做clients,另一个叫做test,在这个叫做clients的目录中,我有一些文件夹,我需要一个shell脚本来读取clients中文件夹的名称,并在文件夹test中创建同名的.txt文件,我对shell非常陌生,我不知道怎么做,你们能帮帮我吗?试着用xargs和lsls-F显示目录client中的所有文件,但随后显示文件夹,并在最后显示一个额外的/。grep使用ls-F输出中的额外/仅将文件夹传递给下一个命令。然后,sed的/\///g从grep中删除额外的/,并将名称传
xargs
和ls
ls-F
显示目录client
中的所有文件,但随后显示文件夹,并在最后显示一个额外的/
。grep
使用ls-F
输出中的额外/
仅将文件夹传递给下一个命令。然后,sed的/\///g
从grep中删除额外的/
,并将名称传递给xargs。然后,xargs将文件夹传递给%
符号,然后用名称创建文本文件
ls -F client | grep / | sed 's/\///g' | xargs -I % touch tests/%.txt
尝试将
xargs
与ls
一起使用ls-F
显示目录client
中的所有文件,但随后显示文件夹,并在最后显示一个额外的/
。grep
使用ls-F
输出中的额外/
仅将文件夹传递给下一个命令。然后,sed的/\///g
从grep中删除额外的/
,并将名称传递给xargs。然后,xargs将文件夹传递给%
符号,然后用名称创建文本文件
ls -F client | grep / | sed 's/\///g' | xargs -I % touch tests/%.txt
谢谢你,朋友,结果比我想象的要好,谢谢你详细的解释,很好的解决方案。我想提供一个bash替代方案:
fori-in-client/*/;进行触摸测试/$(basename$i).txt;完成
。首先,我们只迭代客户端中的目录,而不是所有文件,然后我们使用basename
来获得目录名,而不带尾随斜杠(并且,没有父目录)。谢谢你的朋友,这比我想象的要好,谢谢你的详细解释伟大的解决方案。我想提供一个bash替代方案:fori-in-client/*/;进行触摸测试/$(basename$i).txt;完成
。首先,我们只迭代客户端中的目录,而不是所有文件,然后使用basename
获取目录名,而不带尾随斜杠(并且不带父目录)。