在文件夹中分割文本文件

施莫里森

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

这是到目前为止,我知道它可能很笨拙(以前从未尝试编写.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对执行单词拆分
  • 因为选项是可选的,所以可以getopts用来收集它们。
  • 您将位置参数存储在变量中,但是继续使用位置参数。选择一个或另一个。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python:如何从文本文件中分割位置数据

如何在Windows中分割大文本文件?

从文本文件中分割字符串

从文本文件获取文件夹名称

找不到目录文件夹内文件夹中的python文本文件

在UNIX中分割文件并将文件名保存在文本文件中

根据逗号和空格(Python)在文本文件中分割文本

将文本文件中列出的特定文件从源文件夹复制到目标文件夹

在特定目录中的文本文件中指定创建文件夹/子文件夹/文件

尝试合并文件夹中的所有文本文件并附加文件

使用文本文件重命名文件夹中的批处理文件

解析多个文件夹中的文本文件并创建新文件 [shell]

如何重命名子文件夹或zip文件中的文本文件

从部分名称在文本文件中的文件夹中选择 wav 文件

PowerShell逐行读取文本文件并在文件夹中查找丢失的文件

如何从文本文件中给定的路径创建文件夹和文件

无法将不同的文本文件放入在主文件夹中创建不同的子文件夹

将2个最新的文本文件从源文件夹复制到目标文件夹

使用文件夹名称在所有文件夹中创建空文本文件

从 excel 表创建文件夹和子文件夹和子文本文件

Java根据长度从文本文件中分割行并将其放入向量中

python分割文本文件功能

不阅读就分割文本文件

从文本文件分割数据

将文件夹中的文本文件读入 martix

如何从Assets文件夹共享htm文本文件?

在文件夹中的每个文本文件上运行脚本

子文件夹不显示文本文件-JAVA

Java的无法找到资源文件夹中的文本文件