所以我现在有了下面的代码,我遇到了一些问题
我在排除
输出的目录时遇到问题find ${1-.}
它也给了我目录而不仅仅是名字;我尝试了不同的方法,如-prune等。
我在删除空文件时遇到问题
给我的数据
EMPTY_FILE=$(find ${1-.} -size 0)
不给我正确的道路 这是
的输出 TestFolder/TestFile
在这种情况下,我不能这样做:
rm TestFolder/TestFile
因为它是无效的路径;因为它需要./TestFolder/TestFile
我如何添加./或者在那里获取完整路径。
#!/bin/bash
echo "Here are all the files in the directory specified\n"
find ${1-.}
EMPTY_FILE=$(find ${1-.} -size 0)
echo "Here are the list of empty files\n"
echo "$EMPTY_FILE \n"
echo "Do you want to delete those empty files?(yes/no)"
read text
if [ "$text" == "yes" ]; then $(rm -- $EMPTY_FILE); fi
感谢任何帮助!
答案 0 :(得分:2)
你想要这个:
#!/bin/bash
echo -e "Here are all the files in the directory specified\n"
# Use -printf "%f\n" to print the filename without leading directories
# Use -type f to restrict find to files
find "${1-.}" -type f -printf " %f\n"
echo -e "Here are the list of empty files\n"
# Again, use -printf "%f\n"
find "${1-.}" -type f -size 0 -printf " %f\n"
echo -e "Do you want to delete those empty files?(yes/no)"
read answer
# Delete files using the `-delete` option
[ "$answer" = "yes" ] && find "${1-.}" -type f -size 0 -delete
另请注意,我在任何情况下都会引用"${1-.}"
。由于它是用户输入,因此您无法依赖输入。即使它是一个路径,它仍然可能包含有问题的字符,如空格。
答案 1 :(得分:1)
我在排除
输出的目录时遇到问题Model
它也给了我目录而不是名字
您正在寻找find ${1-.}
测试。要指示-type
仅报告常规文件,您可以说
find
这可能是你真正想要的,但你实际要求的(只排除目录)将是
find ${1-.} -type f
仅排除目录也会列出符号链接和特殊文件。
在这种情况下,我不能这样做:
find ${1-.} -not -type d
因为它是无效的路径;因为它需要./TestFolder/TestFile
无意义。 rm TestFolder/TestFile
与./TestFolder/TestFile
完全相同。
无论如何,TestFolder/TestFile
打印从指定的起始路径开始的路径。
答案 2 :(得分:0)
我有一种感觉,我在你的问题中遗漏了一些东西,但如果您只需要排除目录,只需告诉find只查找文件:
find . -type f -size 0 -delete
然后调整它以适合您的脚本。希望这会有所帮助。
答案 3 :(得分:0)
-size 0 -type f
没有选项的rm不会删除目录。无论如何,你声称rm需要./是错误的。