gpt4 book ai didi

linux - 在给定命令行参数的情况下循环遍历不同目录中的文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:06:21 25 4
gpt4 key购买 nike

我正在尝试扩展一个脚本,该脚本在 Linux 上实现类似文件回收站的功能。我在底部有要扩展的代码。

在我的扩展中,当脚本与命令行参数一起出现时 -cleanup我想遍历 /home/7/bearm/.garbage 中的文件目录,并让用户决定是否要删除该文件。

但是,我不知道如何检测命令行参数何时出现。命令行可以有其他参数,我只想在 -cleanup 时循环遍历文件用来。

我也不知道如何遍历不同目录 ( /home/7/bearm/.garbage ) 中的文件。

我将如何做这些事情?

set directory = '/home/7/bearm/.garbage/'

if(! -d "$directory") then
mkdir .garbage
mv .garbage /home/7/bearm/
endif

set n = 1

while ($n <= $#argv)
set file = $argv[$n]
if(-d $file) then
#do nothing
echo "Cannot trash directory $file"
else
mv $file /home/7/bearm/.garbage
echo "Trashed $file"
endif
@ n++
end
du -h /home/7/bearm/.garbage

最佳答案

要测试参数是否包含 -cleanup,您可以这样做(在 Minix3 上用 ash 测试):

if echo "$@" | grep -- "-cleanup" >/dev/null 2>&1; then
echo "-cleanup is present..."
fi

此外,如果您想要使用长 GNU 样式选项的正确解决方案,请参阅 http://www.sputnick-area.net/scripts/getopts_long_example.shhttp://www.sputnick-area.net/scripts/getopts_long.sh


伪脚本的 bash 版本:

#!/bin/bash

directory='/home/7/bearm/.garbage/'

mkdir -p "$directory"

for arg; do
if [[ -d $arg ]]; then
#do nothing
echo "Cannot trash directory $arg" >&2
else
mv "$arg" "$directory"
echo "Trashed $arg"
fi
done

du -sh "$directory"

随时使用 -cleanup 开关对其进行改进。

关于linux - 在给定命令行参数的情况下循环遍历不同目录中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12888577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com