从下面的代码中,我将搜索大小为零的文件,并提示用户删除它们(如果他们愿意)。但是,我迷失了,因为脚本应该允许将目录指定为命令行参数。如果命令行上未指定目录,我必须使用当前目录作为默认目录。我认为我走在正确的轨道上,但似乎无法弄清楚如何提示用户输入他希望删除的文件的路径。
#!/bin/bash
ls -lR | grep '^-' | sort -k 5 -rn
echo "Files of size zero, relative to current directory, are as follows:"
find . -size 0 -print
echo "Would you like to delete the files of size zero?: Type yes or no"
read answer
if [[ $answer == "yes" ]]
then
find . -type f -empty -delete
echo "List of files with size zero files deleted:"
ls -lR | grep '^-' | sort -k 5 -rn
else
echo "User wishes to not delete files"
fi
答案1
你会使用
topdir=${1:-.}
这会将topdir
变量设置为第一个命令行参数,除非它丢失或为空,在这种情况下它将被设置为.
.然后您可以"$topdir"
在命令中使用。记住要双引号它。
您不会提示用户输入要删除的文件的路径,您已经在使用find
该路径:
find "$topdir" -type f -empty -delete
如果您确实想要每个文件都有提示,您可以使用
find "$topdir" -type f -empty -ok rm {} ';'
风格点评:
通常会在标准错误上向用户输出提示:
echo "Would you like to delete the files of size zero?: Type yes or no" >&2 read answer
或者
read -p "Delete files (yes/no): " answer
您将
-size 0
和混合-empty
在您的两个find
调用中。