gpt4 book ai didi

linux - 拆分文件夹中的文本文件

转载 作者:太空宇宙 更新时间:2023-11-04 09:35:46 25 4
gpt4 key购买 nike

我一直在尝试制作一个 shell 脚本,它将文本文件一个接一个地拆分到整个文件夹中,并将每个拆分的 block 存放到另一个指定的文件夹中。

这是我目前所拥有的,我知道它可能很笨拙(之前从未尝试过编写 .sh):

#!/bin/bash
#File Split Automation

echo "Usage: split [Folder w/ Input] [Folder For Outputs] [Options] [PREFIX]
Options: -b [sizeMB]: Split by size
-l [No. of Lines]: Split by Lines
If No Output Folder is Defined Default is Set To: /Desktop/splitter-parts
If No Options Are Selected Default is Size=100MB"

inputdirc=$1
outputdirc=$2
spltion=$3
meastick=$4
prefixture=$5

if [ -d $1 ]
then
echo "You Picked The Folder $1 To Split Files From"
ls $1
else
exit
fi

if [ -d $2 ]
then
echo "Please Confirm Folder Path For Output $outputdirc"
else
cd /root/Desktop/
mkdir -p splitter-parts
fi



read -t 10 -p "Press Enter Or Wait 5 Sec. To Continue"


cd $2

for swordfile in $( ls $1);
do
command -p split $3 $4 -a 3 -d $swordfile $5

done

有什么地方不对吗?因为我没有得到我想要的输出,尽管当我在拆分命令字符串中只有一个文件和一个文件夹时它运行良好。

编辑::::

对不起,我道歉。只是有点超前了。

这是我运行时看到的:

root@kali:~/Desktop/Wordlists# ./splitter.sh '/root/Desktop/Wordlists'               '   /root/Desktop/Untitled Folder' s 100MB
Usage: split [Folder w/ Input] [Folder For Outputs] [Options] [PREFIX]
Options: -b [sizeMB]: Split by size
-l [No. of Lines]: Split by Lines
If No Output Folder is Defined Default is Set To: /Desktop/splitter-parts
If No Options Are Selected Default is Size=100MB
You Picked The Folder /root/Desktop/Wordlists To Split Files From
10dig10milup2.txt mixed.txt
10dig10miluplow2.txt movie-characters.txt
10dig10miluplow3.txt name1s.txt
((------------------CUT------------)
lower.lst xae2.txt
lower.txt xaf2.txt
mangled.lst xag2.txt
mangled.txt xah6.txt
misc-dictionary.txt
./splitter.sh: line 24: [: /root/Desktop/Untitled: binary operator expected
Press Enter Or Wait 5 Sec. To Continue
./splitter.sh: line 37: cd: /root/Desktop/Untitled: No such file or directory
split: extra operand `10dig10milup2.txt'
Try `split --help' for more information.
split: extra operand `10dig10miluplow2.txt'
Try `split --help' for more information.
split: extra operand `10dig10miluplow3.txt'
Try `split --help' for more information.
split: extra operand `10dig10miluplow4.txt'
Try `split --help' for more information.
...................MORE OF THE SAME.......

就我应该看到的而言,我还没有走到那一步,显然我遗漏了一些步骤。

最佳答案

快速重写并遵循一些注释:

#!/bin/bash
#File Split Automation

usage="Usage: split [Options] [Folder w/ Input] [Folder For Outputs] [PREFIX]
Options: -b [sizeMB]: Split by size
-l [No. of Lines]: Split by Lines
If No Output Folder is Defined Default is Set To: /Desktop/splitter-parts
If No Options Are Selected Default is Size=100MB"

split_opt="-b 100MB"
while getopts hb:l: opt; do
case $opt in
h) echo "$usage"; exit ;;
b) split_opt="-b $OPTARG" ;;
l) split_opt="-l $OPTARG" ;;
esac
done
shift $((OPTIND - 1))

if [[ $# -eq 0 ]]; then
echo "$usage"
exit 1
fi

inputdirc=$1
if [[ -d $inputdirc ]]; then
ls $1
else
echo "no such directory: $inputdirc" >&2
exit 1
fi

if [[ -n $2 ]]; then
outputdirc=$2
else
outputdirc=/root/Desktop/splitter-parts
fi

prefixture=$3

mkdir -p "$outputdirc"
cd "$outputdirc"

for swordfile in "$inputdirc"/*; do
command -p split $split_opt -a 3 -d "$swordfile" $prefixture
done

注意事项:

  • 您通常希望引用所有您的变量。这是您出错的原因,因为名称中有一个包含空格和方括号的文件。
  • 我没有在 split 命令中引用一对,因为我特别希望 shell 执行 word splitting关于值(value)观
  • 因为选项是可选的,所以使用 getopts 来收集它们。
  • 您将位置参数存储在变量中,但您继续使用位置参数。选择其中之一。

关于linux - 拆分文件夹中的文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26671606/

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