我有一系列文件,如下所示:
File.Number.{1..10}.txt
Run Code Online (Sandbox Code Playgroud)
我想获取其中存在哪些文件的数组或序列。一种乏味的方法是遍历所有这些并附加到一个数组。我想知道是否有一个单行可以告诉我这些文件中哪些不存在或拉出文件的编号。
目前,我正在尝试解析目录中的所有文件。我有一个 find 函数,但它似乎无法将带有空格的文件目录解析为循环。这"$DIR"是我希望搜索的目录。有没有人知道如何修改它以使其工作?谢谢。
for file in $(find "$DIR" -type f)
do
echo "$file"
done
Run Code Online (Sandbox Code Playgroud) 假设我生成了两个目录,每个目录中都有文本文件,如下所示
mkdir "Directory1"
mkdir "Directory2"
touch "Directory1/fileclass1_"{1..5}".txt"
touch "Directory1/fileclass2_"{1..5}".txt"
touch "Directory2/fileclass1_"{1..5}".txt"
touch "Directory2/fileclass2_"{1..5}".txt"
Run Code Online (Sandbox Code Playgroud)
假设我通过执行以下操作来验证所有文件都在里面
A=( "Directory1" "Directory2" )
B=( "fileclass1" "fileclass2" )
for a in "${A[@]}"; do
for b in "${B[@]}"; do
for i in {1..5}; do
name="${a}/${b}*${i}.txt"
[[ ! -e $name ]] && echo "$name Does Not Exist"
done
done
done
Run Code Online (Sandbox Code Playgroud)
这返回
Directory1/fileclass1*1.txt Does Not Exist
Directory1/fileclass1*2.txt Does Not Exist
...
Run Code Online (Sandbox Code Playgroud)
但是,如果我用单括号替换双括号,我得到
A=( "Directory1" "Directory2" )
B=( "fileclass1" "fileclass2" )
for a in "${A[@]}"; do
for b in "${B[@]}"; …Run Code Online (Sandbox Code Playgroud) 我目前有两个 bash 函数,一个用于上传,另一个用于下载文件。我想创建一个 bash 脚本,允许用户指定他们想要做的两个中的哪一个。
我遇到的问题是上传和下载功能无论如何都会运行。例如:
function upload() {
var=$1
#something goes here for upload
}
function download() {
var=$1
#something here for download
}
main() {
case "$1" in
-d) download "$2";;
-u) upload "$2";;
*) "Either -d or -x needs to be selected"
esac
}
Run Code Online (Sandbox Code Playgroud)
我不能得到的main()只和抑制运行download和upload备用。