接受2个参数,source和destination,并删除除txt之外的所有文件。我只是学习bash,所以不使用/不了解不同的功能等。
mkdir $2
cp -R $1/* $2
for file in $1/*;do #all files in testInput
if [ -d "$file" ] #if its a file then look at the contents of it
then
for inDir in $file/*; do
if [ -d "$inDir" ]
then
for line in $inDir ; do
if [ line != *.txt ]
then
rm line
fi
done
fi
done
else
for files in file; do
if [ files != *.txt ]
then
rm files
fi
done
fi
done
源是一个包含3个文件夹的文件夹,其中一些子文件夹包含一个子文件夹和文件
您应该使用它find
来完成此类任务。这是一个例子:
find "$dir" -type f ! -name "*.txt" -exec rm {} \;
否则 :
if [ line != *.txt ] # ... if [ files != *.txt ]
您缺少$
变量名称前的,并且测试不正确。您可以尝试这样的事情:
[[ $line =~ \.txt$ ]] || rm line
而且 :
for files in file; do
您在$
变量名称前缺少字符,应该改用以下代码:
for files in "$file"/*; do
最后,您不能适当地保护变量。读这:bash:非法号码
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句