venting! why are the bash manuals so difficult to read
i comprehend things by seeing examples/doing, not by abstract concepts. i find it really difficult to grasp the manual information. why doesn't the manual include some examples?
https://redd.it/15qe2oh
@r_bash
i comprehend things by seeing examples/doing, not by abstract concepts. i find it really difficult to grasp the manual information. why doesn't the manual include some examples?
https://redd.it/15qe2oh
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
I need help with a function.
You might have seen my post a few days ago, if not, it's fine, I just need help again.
​
I have the function:
​
​
Now, whenever I type "music x" it plays my playlist at x volume. However, whenever I type "mpv" it also plays my playlist, prohibiting me from using mpv ever again. Not even "\\mpv works" like an alias. How do i fix this?
https://redd.it/15qjhd5
@r_bash
You might have seen my post a few days ago, if not, it's fine, I just need help again.
​
I have the function:
​
music () { /usr/bin/mpv ~/Music/[playlist]/* --volume="$1" --shuffle --no-audio-display; }​
Now, whenever I type "music x" it plays my playlist at x volume. However, whenever I type "mpv" it also plays my playlist, prohibiting me from using mpv ever again. Not even "\\mpv works" like an alias. How do i fix this?
https://redd.it/15qjhd5
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Questions about finding one or more files and renaming them
I am BRAND NEW to Bash and have a few questions.
Here’s what I’m trying to do:
Find one or more files that could be located anywhere on a Macbook. If files found, rename them.
File will be named like this:
[filename (always the same)\] - [a number that will vary but will be of the form #.#.# or #.#.##\].[file extension (always the same)\].
So something like “foo-1.2.3.abc”.
Based on what I know, I’m guessing the “find” command is the way to go because it’s recursive by default, and also because I won’t necessarily know the location of the files.
Question 1: how do I write the command to denote that I want to search the entire Macbook? I’ll be deploying this noscript to our corporate environment via JAMF (our device management solution for Apple devices.
Question 2: once the noscript finds files on the Macbook, how do I take further action on the results?
I’m planning to tackle this task in two phases. First phase: if files found, rename them (I don’t think removing the files is going to cause an issue, as I’ve already done a similar thing on the Windows side of our environment, but I want an easy way to revert if things are unexpectedly impacted). Second phase: delete all the renamed files.
I’m guessing the rename will be handled by the “mv” command. Something like
mv -v “/location/foo-1.2.3.abc” “/location/foo-1.2.3.abc.DONOTUSE”
But I’m not sure how to couple the rename command with the results of the find command, beyond thinking it’s probably going to involve a pipe character.
Could someone provide just a general example? Thanks!
https://redd.it/15r47q3
@r_bash
I am BRAND NEW to Bash and have a few questions.
Here’s what I’m trying to do:
Find one or more files that could be located anywhere on a Macbook. If files found, rename them.
File will be named like this:
[filename (always the same)\] - [a number that will vary but will be of the form #.#.# or #.#.##\].[file extension (always the same)\].
So something like “foo-1.2.3.abc”.
Based on what I know, I’m guessing the “find” command is the way to go because it’s recursive by default, and also because I won’t necessarily know the location of the files.
Question 1: how do I write the command to denote that I want to search the entire Macbook? I’ll be deploying this noscript to our corporate environment via JAMF (our device management solution for Apple devices.
Question 2: once the noscript finds files on the Macbook, how do I take further action on the results?
I’m planning to tackle this task in two phases. First phase: if files found, rename them (I don’t think removing the files is going to cause an issue, as I’ve already done a similar thing on the Windows side of our environment, but I want an easy way to revert if things are unexpectedly impacted). Second phase: delete all the renamed files.
I’m guessing the rename will be handled by the “mv” command. Something like
mv -v “/location/foo-1.2.3.abc” “/location/foo-1.2.3.abc.DONOTUSE”
But I’m not sure how to couple the rename command with the results of the find command, beyond thinking it’s probably going to involve a pipe character.
Could someone provide just a general example? Thanks!
https://redd.it/15r47q3
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Recommended Video: A break down on the top 50 terminal commands
I came across this video on YT. I have been playing it in the background while I work and already I have picked up a few terminal commands I didn't know, but already have potential use cases...
https://www.youtube.com/watch?v=ZtqBQ68cfJc
https://redd.it/15rksrs
@r_bash
I came across this video on YT. I have been playing it in the background while I work and already I have picked up a few terminal commands I didn't know, but already have potential use cases...
https://www.youtube.com/watch?v=ZtqBQ68cfJc
https://redd.it/15rksrs
@r_bash
YouTube
The 50 Most Popular Linux & Terminal Commands - Full Course for Beginners
Learn the 50 most popular Linux commands from Colt Steele. All these commands work on Linux, macOS, WSL, and anywhere you have a UNIX environment. 🐱
✏️ Colt Steele developed this course.
🔗 The Linux Command Handbook by Flavio Copes: https://www.freecod…
✏️ Colt Steele developed this course.
🔗 The Linux Command Handbook by Flavio Copes: https://www.freecod…
Why did teacher use address 192.168.1.0 for -sn and syn scan despite the default being 1.1? won't we be able to detect more through 1.1 because it is a gateway and all systems are connected to it?
https://redd.it/15rn8y9
@r_bash
https://redd.it/15rn8y9
@r_bash
Reddit
From the bash community on Reddit: Why did teacher use address 192.168.1.0 for -sn and syn scan despite the default being 1.1?…
Explore this post and more from the bash community
How to verify if a redis dump was successfully restored?
I have a bash noscript that
- downloads a redis dump from S3
- stops any running docker containers with the name "myrediscontainer"
- starts a new docker container "myrediscontainer" and copies the downloaded dump file into the data directory of this container
- waits for this docker container to be ready
When I manually jump into the container and run redis-cli, I can see all the keys
But how do I verify if the restore was successful or not inside the bash noscript. Would it be safe to say that dbsize > 0 means restore was successful? Is there a more appropriate way?
#!/usr/bin/env bash
# https://www.shellcheck.net/ VERIFIED
set -e
set -E
set -o pipefail
set -u
# set -x
log="/tmp/error.txt"
exec 2>>"$log"
handleerror() {
# ...handle error
exit 1
}
handleexit() {
# ...handle exit
exit 0
}
trap 'handleexit $?' EXIT
trap 'handleerror $?' ERR
bucket='something-something'
containername="myrediscontainer"
dumpfiledirectory="/tmp"
host="localhost"
port="6379"
dumpfilename=$(aws s3 ls $bucket --recursive | sort | tail -n 1 | awk '{print $4}')
aws s3 cp "s3://${bucket}/${dumpfilename}" "/tmp/${dumpfilename}"
docker ps -aq --filter "name=${containername}" | grep -q . && docker stop "${containername}" && docker rm -fv "${containername}"
docker run --detach --name "${containername}" --publish "${port}:${port}" --volume "/tmp/${dumpfilename}:/data/dump.rdb" redis
# Wait for the Docker container to be ready
until docker exec -it "${containername}" redis-cli -h "${host}" -p "${port}" ping; do
sleep 1
done
# HOW TO VERIFY IF REDIS WAS RESTORED SUCCESSFULLY HERE???
https://redd.it/15rmhbi
@r_bash
I have a bash noscript that
- downloads a redis dump from S3
- stops any running docker containers with the name "myrediscontainer"
- starts a new docker container "myrediscontainer" and copies the downloaded dump file into the data directory of this container
- waits for this docker container to be ready
When I manually jump into the container and run redis-cli, I can see all the keys
But how do I verify if the restore was successful or not inside the bash noscript. Would it be safe to say that dbsize > 0 means restore was successful? Is there a more appropriate way?
#!/usr/bin/env bash
# https://www.shellcheck.net/ VERIFIED
set -e
set -E
set -o pipefail
set -u
# set -x
log="/tmp/error.txt"
exec 2>>"$log"
handleerror() {
# ...handle error
exit 1
}
handleexit() {
# ...handle exit
exit 0
}
trap 'handleexit $?' EXIT
trap 'handleerror $?' ERR
bucket='something-something'
containername="myrediscontainer"
dumpfiledirectory="/tmp"
host="localhost"
port="6379"
dumpfilename=$(aws s3 ls $bucket --recursive | sort | tail -n 1 | awk '{print $4}')
aws s3 cp "s3://${bucket}/${dumpfilename}" "/tmp/${dumpfilename}"
docker ps -aq --filter "name=${containername}" | grep -q . && docker stop "${containername}" && docker rm -fv "${containername}"
docker run --detach --name "${containername}" --publish "${port}:${port}" --volume "/tmp/${dumpfilename}:/data/dump.rdb" redis
# Wait for the Docker container to be ready
until docker exec -it "${containername}" redis-cli -h "${host}" -p "${port}" ping; do
sleep 1
done
# HOW TO VERIFY IF REDIS WAS RESTORED SUCCESSFULLY HERE???
https://redd.it/15rmhbi
@r_bash
www.shellcheck.net
ShellCheck – shell noscript analysis tool
ShellCheck finds bugs in your shell noscripts
how to do rg-fzf-vi function/pipeline?
Hiiiii!!! I need to do something like
I don't know bash (string parsing/expansion/etc, and other aspects of the language) too well. I struggle back and forth between
struggle #1: in lieu of a file object how to parse the filename from a string like
2022-01-02.mkd:looking for a loved rabbi... Hillel the Elder, alive around...
Uh...
struggle #2: what's the best way?
ow. this hurts (sorry for whining, i feel very whiny). Any of you kindhearted folks able to help please? thankyou <3
https://redd.it/15rxc6l
@r_bash
Hiiiii!!! I need to do something like
rg rabbi | fzf | rg ".*.mkd" | xargs vi real easily but this is not at all easy for me.I don't know bash (string parsing/expansion/etc, and other aspects of the language) too well. I struggle back and forth between
grep/ack/rg without knowing either well, moving towards rg. And I don't know fzf well, but it's flags look --magical (and <oof> I fall down).struggle #1: in lieu of a file object how to parse the filename from a string like
2022-01-02.mkd:looking for a loved rabbi... Hillel the Elder, alive around...
Uh...
cut? tr? grep? bash string expansion or globbing or something?struggle #2: what's the best way?
fzf looks like it's designed to be used in pipelines perhaps more efficiently than what I've shown here... how do you do that?ow. this hurts (sorry for whining, i feel very whiny). Any of you kindhearted folks able to help please? thankyou <3
https://redd.it/15rxc6l
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Portable, ready-to-run shell noscript
I wrote a shell noscript that is intended to be used by laymen/non-programmers, and I simply want them to download my noscript from github and double-click the file and have it run. The problem when you unzip the respository and click the file, it fails because it does not have correct permissions to run. I have to chmod +x the file first. Is there a way to preset permissions so that users can just double click and run after download? I can't expect these users to open the terminal and properly enter chmod commands. This is for OSX btw.
https://redd.it/15s5531
@r_bash
I wrote a shell noscript that is intended to be used by laymen/non-programmers, and I simply want them to download my noscript from github and double-click the file and have it run. The problem when you unzip the respository and click the file, it fails because it does not have correct permissions to run. I have to chmod +x the file first. Is there a way to preset permissions so that users can just double click and run after download? I can't expect these users to open the terminal and properly enter chmod commands. This is for OSX btw.
https://redd.it/15s5531
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Print lines between similar patterns
We have some python noscripts that queries our AWS accounts and produces a list of the accounts and some resources associated, including available AMIs. Using
Eg, the python output would be something like this:
Processing account: A
Text to ignore
More text to ignore
.
.
AMI used:
'ami-123456', 'ami-789012'
More text to ignore
Processing account: B
Text to ignore
More text to ignore
.
.
Processing account: C
Text to ignore
More text to ignore
.
.
AMI used:
'ami-abcdef', 'ami-123456'
More text to ignore
What I'm trying to get:
Processing account: A
AMI used:
'ami-123456', 'ami-789012'
Processing account: C
AMI used:
'ami-abcdef', 'ami-123456'
I was thinking of something like this, but it gives me 'Processing account: B', which doesn't have any AMIs listed.
$ sed -n '/Processing/, /Processing/p' filename.txt | grep -vE '(Text to ignore|More text to ignore)'
Output:
Processing account: A
AMI used:
'ami-123456', 'ami-789012'
Processing account: B
Processing account: C
AMI used:
'ami-abcdef', 'ami-123456'
Surely there is a better way to do this; keen to any suggestions.
Thank you.
https://redd.it/15siimc
@r_bash
We have some python noscripts that queries our AWS accounts and produces a list of the accounts and some resources associated, including available AMIs. Using
sed, I am trying to filter through the output to fetch only the accounts which have the AMI and the associated AMI. Eg, the python output would be something like this:
Processing account: A
Text to ignore
More text to ignore
.
.
AMI used:
'ami-123456', 'ami-789012'
More text to ignore
Processing account: B
Text to ignore
More text to ignore
.
.
Processing account: C
Text to ignore
More text to ignore
.
.
AMI used:
'ami-abcdef', 'ami-123456'
More text to ignore
What I'm trying to get:
Processing account: A
AMI used:
'ami-123456', 'ami-789012'
Processing account: C
AMI used:
'ami-abcdef', 'ami-123456'
I was thinking of something like this, but it gives me 'Processing account: B', which doesn't have any AMIs listed.
$ sed -n '/Processing/, /Processing/p' filename.txt | grep -vE '(Text to ignore|More text to ignore)'
Output:
Processing account: A
AMI used:
'ami-123456', 'ami-789012'
Processing account: B
Processing account: C
AMI used:
'ami-abcdef', 'ami-123456'
Surely there is a better way to do this; keen to any suggestions.
Thank you.
https://redd.it/15siimc
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
IF inside awk
need to convert a comma separated integer into an integer and IF compare it to 1000 all inside an awk
if($1 > 1000){
printf("%s", $1);
}
where $1 is the first field of each record and looks like " 1,500"
https://redd.it/15sizhh
@r_bash
need to convert a comma separated integer into an integer and IF compare it to 1000 all inside an awk
if($1 > 1000){
printf("%s", $1);
}
where $1 is the first field of each record and looks like " 1,500"
https://redd.it/15sizhh
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Counting seconds
I'm working on a function that counts seconds. The function stops as soon as any key is pressed. While this function works, I wonder whether there is a more efficient way to do this.
https://redd.it/15sig89
@r_bash
I'm working on a function that counts seconds. The function stops as soon as any key is pressed. While this function works, I wonder whether there is a more efficient way to do this.
start=$SECONDS
while true; do
duration=$(( SECONDS - start ))
printf '%s' "$duration"
read -n 1 -t 1 -s && break
printf '\r'
done
printf '\r'
https://redd.it/15sig89
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
printf behaviour inside awk
printf("$1"); will echo "$1"
printf("%s",$1); will echo the variable inside $1
how do i get the first one to work?
https://redd.it/15si7de
@r_bash
printf("$1"); will echo "$1"
printf("%s",$1); will echo the variable inside $1
how do i get the first one to work?
https://redd.it/15si7de
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Why is my Guess game doing this? I can't see what the problem is. Maybe one of you can?
https://redd.it/15sol82
@r_bash
https://redd.it/15sol82
@r_bash
tmuxo - A bash noscript to create + attach or create + switch(if exists) tmux sessions
https://redd.it/15sxh1r
@r_bash
#!/usr/bin/env bash
# Script to create + attach or switch to an existing tmux session
# Inspired from the followings:
# 1) https://github.com/thuanowa/tmux-fzf-session-switch
# 2) https://github.com/ThePrimeagen/.dotfiles/blob/master/bin/.local/noscripts/tmux-sessionizer
function tmuxOpen {
if [[ -z $TMUX ]] ; then
tmux attach -t "$1"
else
tmux switch-client -t "$1"
fi
exit 0
}
function main {
local sessions
local sess_arr
local retval
local session
local query
sessions=$(tmux list-sessions -F "#{session_name}" | fzf --exit-0 --print-query --reverse)
retval=$?
# echo "$sessions"
# echo "$retval"
IFS=$'\n' read -rd '' -a sess_arr <<<"$sessions"
session=${sess_arr[1]}
query=${sess_arr[0]}
# echo "$session"
# echo "$query"
if [[ $retval == 0 ]]; then
if [[ "$session" == "" ]]; then
session="$query"
fi
printf "Switching to existing tmux session named [$session]\n"
else
if [[ -z "$query" ]]; then
printf "Invalid session name \"$query\"\nExiting.\n"
exit 1
fi
session="$query"
printf "Creating new tmux session named [$session] and attaching\n"
tmux new-session -d -s "$session"
fi
tmuxOpen "$session"
}
main
https://redd.it/15sxh1r
@r_bash
Reddit
From the bash community on Reddit: tmuxo - A bash noscript to create + attach or create + switch(if exists) tmux sessions
Explore this post and more from the bash community
Help with AWK noscript
I have the following awk noscript and the text file that I am parsing in this pastebin https://pastebin.com/sFps8wSF. I need this noscript to find out per sequence how many CPUs run under 80% idle and for how long. And then whatever the lowest %idle is, how many CPU's reach within 10% of the lowest and possibly for how long. In the text file example I gave in the pastebin , there are 2 sequences. The output I am expecting is
> Time Block Start: 10:08:29 AM
> CPUs running under 80% idle: 2
> CPU 1 Total time below 80%: 25 seconds
> CPU 4 Total time below 80%: 25 seconds
> CPUs reaching within 10% of lowest %idle: 2
> Time Block End: 10:08:29 AM
>
>
> Time Block Start: 10:13:29 AM
> CPUs running under 80% idle: 1
> CPU 4 Total time below 80%: 25 seconds
> CPUs reaching within 10% of lowest %idle: 2
> Time Block End: 10:13:29 AM
But what I am getting is
> Time Block Start: 10:08:29 AM
> CPUs running under 80% idle: 0
> CPUs reaching within 10% of lowest %idle: 0
> Time Block End: 10:08:29 AM
>
>
> Time Block Start: 10:13:29 AM
> CPUs running under 80% idle: 0
> CPUs reaching within 10% of lowest %idle: 0
> Time Block End: 10:13:29 AM
If anyone knows why my noscript is doing this , I would really appreciate the help!
https://redd.it/15sydwp
@r_bash
I have the following awk noscript and the text file that I am parsing in this pastebin https://pastebin.com/sFps8wSF. I need this noscript to find out per sequence how many CPUs run under 80% idle and for how long. And then whatever the lowest %idle is, how many CPU's reach within 10% of the lowest and possibly for how long. In the text file example I gave in the pastebin , there are 2 sequences. The output I am expecting is
> Time Block Start: 10:08:29 AM
> CPUs running under 80% idle: 2
> CPU 1 Total time below 80%: 25 seconds
> CPU 4 Total time below 80%: 25 seconds
> CPUs reaching within 10% of lowest %idle: 2
> Time Block End: 10:08:29 AM
>
>
> Time Block Start: 10:13:29 AM
> CPUs running under 80% idle: 1
> CPU 4 Total time below 80%: 25 seconds
> CPUs reaching within 10% of lowest %idle: 2
> Time Block End: 10:13:29 AM
But what I am getting is
> Time Block Start: 10:08:29 AM
> CPUs running under 80% idle: 0
> CPUs reaching within 10% of lowest %idle: 0
> Time Block End: 10:08:29 AM
>
>
> Time Block Start: 10:13:29 AM
> CPUs running under 80% idle: 0
> CPUs reaching within 10% of lowest %idle: 0
> Time Block End: 10:13:29 AM
If anyone knows why my noscript is doing this , I would really appreciate the help!
https://redd.it/15sydwp
@r_bash
Pastebin
awkhelp - Pastebin.com
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
Need help finding subfolders' sizes and file counts
I need to generate a list of the content of a folder that looks something like this.
main folder/subfolderA/folder A
main folder/subfolderA/folder B
main folder/subfolderA/folder C
main folder/subfolderA/d.zip
main folder/subfolderA/e.exe
main folder/subfolderA/f.jpg
main folder/subfolderB/folder G
main folder/subfolderB/folder H
main folder/subfolderB/folder I
main folder/subfolderB/j.zip
main folder/subfolderB/k.exe
main folder/subfolderA/l.jpg
...
I would like the output to be like this (the format of folder sizes and file counts isn't set in stone, but after the paths).
main folder/subfolderA/folder A 500 MB 50 files
main folder/subfolderA/folder B 500 MB 50 files
main folder/subfolderA/folder C 500 MB 50 files
main folder/subfolderA/d.zip
main folder/subfolderB/folder E 500 MB 50 files
main folder/subfolderB/folder F 500 MB 50 files
main folder/subfolderB/folder G 500 MB 50 files
main folder/subfolderB/j.zip
...
I've been able to find the ZIP files with
Can I adapt the second command to include that?
These two commands + sort generate this:
main folder/
main folder/subfolderA
main folder/subfolderA/folder A
main folder/subfolderA/folder B
main folder/subfolderA/folder C
main folder/subfolderA/d.zip
main folder/subfolderB
main folder/subfolderB/folder G
main folder/subfolderB/folder H
main folder/subfolderB/folder I
main folder/subfolderB/j.zip
...
I've also tried
Any advice is appreciated!
EDIT: I misread the link. I'm able to swap the paths and sizes using this, but it seems incompatible with paths with spaces.
https://redd.it/15swwu0
@r_bash
I need to generate a list of the content of a folder that looks something like this.
main folder/subfolderA/folder A
main folder/subfolderA/folder B
main folder/subfolderA/folder C
main folder/subfolderA/d.zip
main folder/subfolderA/e.exe
main folder/subfolderA/f.jpg
main folder/subfolderB/folder G
main folder/subfolderB/folder H
main folder/subfolderB/folder I
main folder/subfolderB/j.zip
main folder/subfolderB/k.exe
main folder/subfolderA/l.jpg
...
I would like the output to be like this (the format of folder sizes and file counts isn't set in stone, but after the paths).
main folder/subfolderA/folder A 500 MB 50 files
main folder/subfolderA/folder B 500 MB 50 files
main folder/subfolderA/folder C 500 MB 50 files
main folder/subfolderA/d.zip
main folder/subfolderB/folder E 500 MB 50 files
main folder/subfolderB/folder F 500 MB 50 files
main folder/subfolderB/folder G 500 MB 50 files
main folder/subfolderB/j.zip
...
I've been able to find the ZIP files with
/path -iname \*.zip, and
/path -type d -printgets the folders, but I'm having trouble finding a solution for listing the folders' sizes and number of files.
Can I adapt the second command to include that?
These two commands + sort generate this:
main folder/
main folder/subfolderA
main folder/subfolderA/folder A
main folder/subfolderA/folder B
main folder/subfolderA/folder C
main folder/subfolderA/d.zip
main folder/subfolderB
main folder/subfolderB/folder G
main folder/subfolderB/folder H
main folder/subfolderB/folder I
main folder/subfolderB/j.zip
...
I've also tried
-h --max-depth=2 /path, which gets folder sizes, but places them in the front of the path, making it harder to read and sort. Not sure what this output is considered (columns?), I tried swapping like this, but that only changed the values of the folder sizes.
Any advice is appreciated!
EDIT: I misread the link. I'm able to swap the paths and sizes using this, but it seems incompatible with paths with spaces.
https://redd.it/15swwu0
@r_bash
Stack Overflow
Swap columns of a file - Linux (exact position, not word)
I would like to know how to swap columns (the exact character) of a file with Linux (using cut, awk, sed or whatever you can help me with).
I have seen how to swap a whole expression (using delimit...
I have seen how to swap a whole expression (using delimit...
How do I alias cd to print "c deez nuts nerd" and then execute the directory change?
Trying to play a prank on my friend who leaves his laptop open all the time.
https://redd.it/15t0uv9
@r_bash
Trying to play a prank on my friend who leaves his laptop open all the time.
https://redd.it/15t0uv9
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Music sorting program
I challenged my friend to send me an entirely unorganized folder of song files. I am trying to organize this using bash, but the moon runes that is terminal speak are eluding me. Can I get some advice on how I would organize the song files into folders based on their album tag?
https://redd.it/15szpsp
@r_bash
I challenged my friend to send me an entirely unorganized folder of song files. I am trying to organize this using bash, but the moon runes that is terminal speak are eluding me. Can I get some advice on how I would organize the song files into folders based on their album tag?
https://redd.it/15szpsp
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community