Sponsored Content
Full Discussion: Cd then mkdir from script
Top Forums Shell Programming and Scripting Cd then mkdir from script Post 303028501 by bakunin on Wednesday 9th of January 2019 02:55:44 PM
Old 01-09-2019
Quote:
Originally Posted by dpawson
Cd then mkdir from script

I want to change directory to a fixed base ($photos)/$mn obtained from current year month.
If i put that all together correctly you have two problems:

1) obtain the directory name from the date in the form you want.

2) change into that directory or create it if it is not there.

Assuming that this is correctly stated, here are your solutions:

1) use the date command. It wil output the current date (and time) but you can give it a "format string" which will determine in which form you want to output to be formatted. Part of this "formatting" is also the addition or removal of certain parts of the date.

To get the current date and time:
Code:
$ date
Wed Jan  9 20:36:44 CET 2019

Now, let us look at the man page of date (this should always be your first reference when trying to figure out what a command does and how it does it):

Code:
$ man date

DATE(1)                          User Commands                         DATE(1)

NAME
       date - print or set the system date and time

SYNOPSIS
       date [OPTION]... [+FORMAT]
       date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

DESCRIPTION
       Display the current time in the given FORMAT, or set the system date.

OK, so we have date +format where we still have to determine what "format" should be. So, reading further in the man page, we find (among many other formats):
Code:
       FORMAT controls the output.  Interpreted sequences are:
[...]
       %m     month (01..12)
[...]
       %y     last two digits of year (00..99)

So let us have a try:

Code:
$ date '+%y%m'
1901

Problem 1 solved.

For the second problem: you do not need to test it! mkdir knows the -p option, which will create a directory, if it is not there - complete with the whole path leading up to it. Instead of:

Code:
$ mkdir /some
$ cd /some
$ mkdir where
$ cd where
$ mkdir subdir

you can as well write

Code:
$ mkdir -p /some/where/subdir

Which will create the directory /some if it doesn't exist (if it does exist, nothing happens), the in it this directory create /some/where if it does not exist (again, if it does nothing will happen), and so on.

So, your script could contain something like:

Code:
myroot="/some/where"
curdir="$(date '+%y%m')"      # this executes "date '+%y%m'" and assings its output to variable curdir

mkdir -p "$myroot/$curdir"      # make sure the directory exists.
[...] rest of your code here, using "$myroot/$curdir" as path to your files

As a general rule: never use relative pathes in scripts, always only absolute pathes. This way your scripts will always do the same to the same files and will not produce different results just because you called them from a different directory. Also, never use cd in a script. First, you will not need it if using absolute pathes and second, you shouldn't have to change the environment for a script to use. If you want to copy files to a directory you do NOT do:

Code:
cd /some/where
cp /what/ever/* .

But instead you do:

Code:
cp /what/ever/* /some/where

I hope this helps.

bakunin

Last edited by bakunin; 01-09-2019 at 04:03 PM.. Reason: addendum
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

mkdir limitations

What characters can't be used with a mkdir? Any limits on length of name? Thank you, Randy M. Zeitman http://www.StoneRoseDesign.com (12 Replies)
Discussion started by: flignar
12 Replies

2. Shell Programming and Scripting

mkdir

Hi, I look for a script to create 150 directories : d000 d001 d002 ... ... d149 would you help me please ? I think it would be for i mkdir d$i Many thanks. PS : #uname -a AIX fserver 3 5 0050691A4C00 (2 Replies)
Discussion started by: big123456
2 Replies

3. UNIX for Advanced & Expert Users

mkdir

Is there ant way to increase max number of folders in the directory from the 32766: Problem UFS: shell>mkdir mmm mkdir: mmm: Too many links But there are no links, just folders. shell>ls | wc -l 32766 (3 Replies)
Discussion started by: mirusnet
3 Replies

4. Shell Programming and Scripting

find jpg's mkdir script help

I am having a problem getting this to work right. The script needs to search through directories and subdirectories. If a jpg is found then create a folder in that directory, so on and so forth. Here is what I have so far but it doesn't work right. Help please #!/bin/bash for d in `find ./... (1 Reply)
Discussion started by: jedhypes
1 Replies

5. Homework & Coursework Questions

Mkdir

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: Do the procedure, which if there are 5 parameters then it creates 4 directories with names of 4 parameters, in... (2 Replies)
Discussion started by: bolones
2 Replies

6. UNIX for Dummies Questions & Answers

Script for mkdir with permissions

Hello, I'm pretty new to scripting and trying to do a simple (well, I thought so) administrator task. I'm using bash. I want to create 10 directories under the one directory and apply permissions at the same time. I've worked out the make directories part: mkdir /userdata/folder{1..50}... (7 Replies)
Discussion started by: jimothy007
7 Replies

7. UNIX for Dummies Questions & Answers

Mkdir utility

Howdy, Puttering around in unix, and read this in the mkdir man page: "The mkdir utility creates the directories named as operands..." What does this mean, i.e. as operands? Many thanks, DN (2 Replies)
Discussion started by: danuke
2 Replies

8. Shell Programming and Scripting

Bash script: "mkdir -p" doesn't work with var(cat x)

Hello, :) I've an issue with the creation of a directory, All work without it :mad: So, below, my scripts with the debug output : #!/bin/bash # PATHS HOME_BACKUP="/home/backup" HOME_SCRIPT="/home/scripts/test/backup_server" TARGET="/var/www" # DATE DATE_Ymd=$(date +%Y-%m-%d) #... (1 Reply)
Discussion started by: Arnaudh78
1 Replies

9. UNIX for Beginners Questions & Answers

Mkdir

hi linux expert what is a difference between: mkdir test and mkdir ./test and also if ( -e /test ) then and if ( -e ./test ) then thanks in advance Please use icode or code tags next time for your code and data (1 Reply)
Discussion started by: abdossamad2003a
1 Replies

10. Shell Programming and Scripting

Use script to mkdir based on file's data

I have a file with lines like: 111 12 7 111 13 8 112 12 9 115 31 3 120 31 9 123 10 7 125 12 I want to make a script which, split the first column into parts (101-110, 111-120...), and make directories for its part with name (101-110, 111-120...) Also i want in every directory include... (7 Replies)
Discussion started by: efsarantis
7 Replies
All times are GMT -4. The time now is 10:32 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy