写一个脚本,用文件名和目录名作为命令行参数,如果文件是一个普通文件并在给出的目录中,则删除该文件。若文件(第一个参数)是一个目录,则删除此目录(包括所有的文件和子目录)。
时间: 2024-10-09 08:00:48 浏览: 29
你可以使用Python的os和shutil模块来实现这个脚本,以下是一个简单的例子:
```python
import os
import shutil
def delete_file_or_dir(path):
if os.path.isfile(path): # 检查是否为普通文件
try:
os.remove(path)
print(f"已成功删除文件:{path}")
except Exception as e:
print(f"删除文件失败:{e}")
elif os.path.isdir(path): # 检查是否为目录
try:
shutil.rmtree(path)
print(f"已成功删除目录:{path}")
except Exception as e:
print(f"删除目录失败:{e}")
if __name__ == "__main__":
import sys # 获取命令行参数
if len(sys.argv) != 2: # 需要有两个参数:文件或目录路径
print("请输入文件名或目录名作为命令行参数")
else:
path = sys.argv[1]
delete_file_or_dir(path)
相关问题
写一个Shell脚本,用文件名和目录名作为命令行参数,如果文件是一个普通文件并在给出的目录中,则删除该文件。若文件(第一个参数)是一个目录,则删除此目录(包括所有的文件和子目录)。
在Shell中,你可以创建一个简单的bash脚本来完成这个任务。这里是一个基础示例:
```bash
#!/bin/bash
# 检查是否提供了两个参数
if [ "$#" -ne 2 ]; then
echo "Usage: $0 <filename> <directory>"
exit 1
fi
# 获取文件名和目录名
file="$1"
dir="$2"
# 检查文件是否存在,并判断其类型
if [ -f "$file" ]; then
# 如果是普通文件,删除它
if rm -f "$file"; then
echo "File $file deleted."
else
echo "Failed to delete file $file."
fi
elif [ -d "$file" ]; then
# 如果是目录,递归删除
if rm -rf "$dir"; then
echo "Directory $dir and its contents deleted."
else
echo "Failed to delete directory $dir."
fi
else
echo "Invalid input: '$file' is not a regular file or a directory."
fi
# 提供一些相关问题
linux系统中,用一个目录作为命令行参数,将该目录下的所有文件中名字最长的那个文件名输出。如果命令行参数不是一个目录,则输出提示信息,同时返回一个非0退出码
你好,感谢您的提问。
针对您的问题,可以通过以下的 Shell 脚本实现:
```bash
#!/bin/bash
if [ ! -d "$1" ]; then
echo "Error: Please provide a directory as argument."
exit 1
fi
longest_file=""
longest_file_len=0
for file in "$1"/*; do
if [ -f "$file" ]; then
len=$(echo "$file" | wc -c)
if (( $len > $longest_file_len )); then
longest_file="$file"
longest_file_len=$len
fi
fi
done
if [ "$longest_file" == "" ]; then
echo "Error: No files found in the directory."
exit 1
fi
echo "$longest_file"
```
这个脚本首先判断命令行参数是否为目录,如果不是,则输出错误提示,并且返回非0的退出码。
如果命令行参数是一个目录,它会遍历该目录下的每个文件,并计算每个文件名的长度。如果它发现一个文件名比当前跟踪的最长文件名更长,它就会更新最长文件名和其长度。这样,当它遍历完整个目录时,它将留下最长的文件名。
最后,如果目录中不存在文件,则输出错误提示,并且返回非0的退出码。
希望这个回答能够帮助您。如有任何其他问题,请随时提出!
阅读全文